Rumah >pembangunan bahagian belakang >C++ >Bagaimana Mengendalikan Tugasan Boleh Nullable dengan Operator Bersyarat dalam 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!