Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Menentukan sama ada Jenis Nilai dalam C# boleh dibatalkan?
Semak jenis nilai nullable
Menentukan kebolehbatalan objek ialah masalah biasa apabila berurusan dengan jenis nilai. Apabila menyemak jenis nilai nullable, anda mesti membezakan antara jenis nilai nullable dan jenis rujukan nullable. Dalam kes ini, kita perlu mengenal pasti jenis nilai yang secara tersirat boleh mengandungi nilai nol. Begini cara untuk mencapainya:
<code class="language-csharp">bool IsNullableValueType(object o) { if (o == null) return true; // 显而易见的情况 Type type = o.GetType(); // 修正:使用 o.GetType() 获取对象的实际类型 if (!type.IsValueType) return true; // 引用类型 if (Nullable.GetUnderlyingType(type) != null) return true; // Nullable<T> return false; // 值类型 }</code>
Kaedah ini menilai jenis objek:
Nullable.GetUnderlyingType
). Dalam contoh anda, bc.myBool
merujuk kepada nilai bool
yang tidak boleh dibatalkan dan obj
tidak akan menjadi contoh Nullable<bool>
. Untuk mengendalikan situasi ini, buat pembalut boleh batal di sekeliling IsNullableValueType(bc.myBool)
hanya jika true
menilai kepada obj
.
Arahan penambahbaikan kod: Terdapat ralat dalam Type type = typeof(T);
dalam kod asal kerana T
tidak ditakrifkan. Ini telah diperbetulkan kepada Type type = o.GetType();
, menggunakan jenis masa jalan objek untuk penghakiman.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menentukan sama ada Jenis Nilai dalam C# boleh dibatalkan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!