Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah saya boleh menyemak sama ada Objek C# ialah Jenis Nilai Boleh Nullable?
Semakan kebolehbatalan objek C#
Dalam C#, adalah penting untuk membezakan antara objek nullable dan non-nullable. Artikel ini memfokuskan pada cara untuk menentukan sama ada objek boleh dibatalkan, memfokuskan pada jenis nilai dan bukannya jenis rujukan.
Kaedah pelaksanaan:
Coretan kod berikut menunjukkan satu cara untuk menyemak sama ada objek ialah jenis nilai boleh batal:
<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>
Penerangan kod:
Kaedah ini menyemak tiga situasi:
Nullable.GetUnderlyingType
menyemak sama ada jenis o adalah daripada jenis Nullable<T>
. o ialah jenis nilai nullable jika ia mengembalikan jenis bukan null. Mengendalikan objek berkotak:
Walau bagaimanapun, kaedah ini mungkin gagal jika o ialah jenis nilai kotak. Masalah ini boleh diatasi menggunakan generik:
<code class="language-csharp">static bool IsNullable<T>(T obj) { if (obj == null) return true; // 显而易见的情况 Type type = typeof(T); if (!type.IsValueType) return true; // 引用类型 if (Nullable.GetUnderlyingType(type) != null) return true; // Nullable<T> return false; // 值类型 }</code>
Dengan menggunakan generik, kaedah yang diubah suai ini boleh menyimpulkan jenis T daripada objek yang dilalui, yang berfungsi walaupun o telah berkotak.
Lebih banyak sumber:
Untuk mendapatkan maklumat lanjut tentang jenis nullable dalam C#, lihat dokumentasi Microsoft: https://www.php.cn/link/55298ec38b13c613ce8ffe0f1d928ed2
Atas ialah kandungan terperinci Bagaimanakah saya boleh menyemak sama ada Objek C# ialah Jenis Nilai Boleh Nullable?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!