Jawaban:
Ini berarti bahwa tipe nilai yang dimaksud adalah tipe yang dapat dibatalkan
Jenis Nullable adalah contoh dari System. Struct Nullable. Tipe nullable dapat mewakili kisaran nilai yang benar untuk tipe nilai dasarnya, ditambah nilai null tambahan. Misalnya, a
Nullable<Int32>, dilafalkan "Nullable of Int32," dapat diberi nilai apa pun dari -2147483648 hingga 2147483647, atau dapat diberi nilai nol. ANullable<bool>dapat diberi nilai true, false, atau null. Kemampuan untuk menetapkan null ke tipe numerik dan Boolean sangat berguna ketika Anda berurusan dengan database dan tipe data lainnya yang berisi elemen yang mungkin tidak diberi nilai. Misalnya, bidang Boolean dalam database dapat menyimpan nilai-nilai benar atau salah, atau mungkin tidak terdefinisi.class NullableExample { static void Main() { int? num = null; // Is the HasValue property true? if (num.HasValue) { System.Console.WriteLine("num = " + num.Value); } else { System.Console.WriteLine("num = Null"); } // y is set to zero int y = num.GetValueOrDefault(); // num.Value throws an InvalidOperationException if num.HasValue is false try { y = num.Value; } catch (System.InvalidOperationException e) { System.Console.WriteLine(e.Message); } } }
inttipe dan Integerkelas yang sesuai , misalnya.
Ini adalah singkatan untuk Nullable<int>. Nullable<T>digunakan untuk memungkinkan tipe nilai diatur ke null. Jenis nilai biasanya tidak boleh nol .
value typestidak boleh nol. Jika Anda mendeklarasikan int atau bool (yang merupakan tipe nilai) tanpa secara khusus menetapkan nilai, mereka akan tetap memiliki nilai (masing-masing 0 dan false), yaitu. mereka tidak akan menjadi nol. Diabaikan reference types, seperti objek atau MyClass, akan, sebaliknya, menjadi nol. Anda mungkin ingin membaca tentang perbedaan antara tipe nilai dan tipe referensi.
Di
x ? "yes" : "no"
itu ? mendeklarasikan kalimat if . Di sini: x mewakili kondisi boolean; Bagian sebelum : adalah kalimat lalu dan bagian sesudahnya adalah kalimat lain .
Dalam, misalnya,
int?
itu ? mendeklarasikan tipe nullable, dan berarti tipe sebelum itu mungkin memiliki nilai null.
return value ? value : "isNull";memberitahu saya bahwa string valueisnt convertable menjadi bool.
Jenis yang Tidak Dapat Diabaikan
Jenis Nullable adalah contoh dari System. Struct Nullable. Tipe nullable dapat mewakili kisaran nilai normal untuk tipe nilai yang mendasarinya, ditambah nilai null tambahan . Sebagai contoh, a [
Nullable<Int32>], diucapkan "Nullable of Int32," dapat diberi nilai apa pun dari -2147483648 hingga 2147483647, atau dapat diberi nilai nol. A [Nullable<bool>] dapat diberi nilai true atau false, atau null. Kemampuan untuk menetapkan null ke tipe numerik dan Boolean sangat berguna ketika berhadapan dengan database dan tipe data lainnya yang mengandung elemen yang mungkin tidak diberi nilai. Misalnya, bidang Boolean dalam database dapat menyimpan nilai-nilai benar atau salah, atau mungkin tidak terdefinisi.
itu menyatakan bahwa jenisnya nullable.
penggunaan praktis:
public string someFunctionThatMayBeCalledWithNullAndReturnsString(int? value)
{
if (value == null)
{
return "bad value";
}
return someFunctionThatHandlesIntAndReturnsString(value);
}
Untuk menambahkan jawaban di atas, berikut adalah contoh kode
struct Test
{
int something;
}
struct NullableTest
{
int something;
}
class Example
{
public void Demo()
{
Test t = new Test();
t = null;
NullableTest? t2 = new NullableTest();
t2 = null;
}
}
Ini akan memberikan kesalahan kompilasi:
Kesalahan 12 Tidak dapat mengonversi nol ke 'Tes' karena ini adalah jenis nilai yang tidak dapat dibatalkan
Perhatikan bahwa tidak ada kesalahan kompilasi untuk NullableTest. (perhatikan? dalam deklarasi t2)
int? adalah singkatan Nullable<int> . Kedua bentuk itu saling dipertukarkan.
Nullable<T>adalah operator yang dapat Anda gunakan dengan tipe nilai Tuntuk membuatnya diterimanull .
Dalam kasus Anda tidak tahu itu: nilai jenis yang jenis yang menerima nilai-nilai sebagai int, bool, chardll ...
Mereka tidak dapat menerima referensi ke nilai: mereka akan menghasilkan kesalahan waktu kompilasi jika Anda menetapkannya null, sebagai lawan dari jenis referensi , yang jelas dapat menerimanya.
Mengapa Anda membutuhkannya? Karena terkadang variabel tipe nilai Anda dapat menerima referensi nol yang dikembalikan oleh sesuatu yang tidak berfungsi dengan baik, seperti variabel yang hilang atau tidak ditentukan yang dikembalikan dari database.
Saya sarankan Anda untuk membaca Dokumentasi Microsoft karena itu mencakup subjek dengan cukup baik.