Rumah >pembangunan bahagian belakang >C++ >Bagaimana Mengendalikan Tugasan Boleh Nullable dengan Operator Bersyarat dalam C#?

Bagaimana Mengendalikan Tugasan Boleh Nullable dengan Operator Bersyarat dalam C#?

Patricia Arquette
Patricia Arquetteasal
2025-01-16 16:35:19135semak imbas

How to Handle Nullable Assignments with Conditional Operators in C#?

Gunakan operator bersyarat untuk mengendalikan tugasan boleh batal dalam C#

Jenis nullable, diwakili sebagai Nullable<T>, digunakan untuk mewakili nilai yang mungkin mempunyai nilai yang sah atau tidak. Sesetengah pembangun mungkin menghadapi cabaran dengan pengendali bersyarat apabila memberikan nilai yang boleh dibatalkan.

Masalah dengan jenis nullable dan operator bersyarat

Operator bersyarat

, biasanya dilambangkan dengan ?:, menilai keadaan dan memberikan nilai yang berbeza berdasarkan nilai kebenarannya. Walau bagaimanapun, jika salah satu daripada nilai yang diberikan adalah jenis yang boleh dibatalkan dan yang lain tidak, pengkompil akan menghasilkan ralat disebabkan oleh ketidakserasian jenis.

Pertimbangkan contoh berikut:

<code class="language-csharp">EmployeeNumber =
    string.IsNullOrEmpty(employeeNumberTextBox.Text)
    ? null
    : Convert.ToInt32(employeeNumberTextBox.Text);</code>

Di sini, EmployeeNumber ialah Nullable<int> dan employeeNumberTextBox.Text ialah rentetan. Menugaskan null kepada jenis nullable adalah sah, tetapi menukar rentetan kepada int adalah tidak. Pengkompil tidak boleh membuat kesimpulan dengan betul jenis ungkapan.

Pengendali penggabungan nol bukan penyelesaian yang berdaya maju

Pengendali penggabungan null (??) tidak boleh digunakan di sini kerana penukaran daripada employeeNumberTextBox.Text kepada null diperlukan apabila employeeNumberTextBox.Text bukan int.

Tukar kepada jenis nullable

Untuk menyelesaikan masalah ini, sebarang nilai yang ditetapkan dalam operator bersyarat mesti ditukar secara eksplisit kepada jenis boleh batal. Ini membolehkan pengkompil menyelesaikan jenis ungkapan dengan betul:

<code class="language-csharp">EmployeeNumber =
    string.IsNullOrEmpty(employeeNumberTextBox.Text)
    ? (int?)null
    : Convert.ToInt32(employeeNumberTextBox.Text);</code>

atau:

<code class="language-csharp">EmployeeNumber =
    string.IsNullOrEmpty(employeeNumberTextBox.Text)
    ? null
    : (int?)Convert.ToInt32(employeeNumberTextBox.Text);</code>

Ini membolehkan tugasan yang elegan dan ringkas apabila menggunakan jenis nullable dan operator bersyarat.

Atas ialah kandungan terperinci Bagaimana Mengendalikan Tugasan Boleh Nullable dengan Operator Bersyarat dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn