Ketika saya mendeklarasikan intsebagai nullable
int? i=null;
Apakah di isini menjadi tipe referensi?
Ketika saya mendeklarasikan intsebagai nullable
int? i=null;
Apakah di isini menjadi tipe referensi?
Jawaban:
Tidak, nullable adalah sebuah struct. Apa yang terjadi adalah bahwa nullable struct memiliki dua nilai:
intuntuk int?, DateTimeuntuk DateTime?, dll.).HasValueadalah properti.)Saat Anda menetapkan nilai tipe data, struct berubah HasValuemenjadi true.
Dari Jenis Nullable (Panduan Pemrograman C #) :
Jenis Nullable adalah contoh dari System. Struct Nullable.
dan
Tipe nullable mewakili variabel tipe-nilai yang dapat diberi nilai nol. Anda tidak dapat membuat jenis yang dapat dibatalkan berdasarkan pada jenis referensi. (Jenis referensi sudah mendukung nilai nol.)
Jadi, tidak, mereka bukan tipe referensi.
Tipe nullable bukanlah tipe nilai atau tipe referensi. Mereka lebih seperti tipe nilai, tetapi memiliki beberapa properti tipe referensi.
Secara alami, jenis yang dapat dibatalkan dapat diatur ke null. Selain itu, tipe nullable tidak dapat memenuhi structbatasan generik . Selain itu, saat Anda mengetikkan jenis yang dapat dibatalkan dengan yang HasValuesama dengan false, Anda mendapatkan nullpointer alih-alih jenis yang dapat dihapus dari kotak (situasi serupa terjadi dengan membuka kotak).
Properti ini membuat tipe nullable tipe tidak bernilai, tetapi mereka juga bukan tipe referensi. Mereka adalah tipe nilai nullable khusus mereka sendiri.
Tidak, tipe Nullable sebenarnya adalah sebuah struct. Runtime akan secara cerdas menangani pengaturan nilai nol untuk Anda, memberikan tampilan jenis referensi, ketika tidak ....
Jenis yang tidak dapat dihapus tidak dapat menjadi jenis referensi.