Di C #, apa nilai default dari variabel contoh kelas tipe int?
?
Misalnya, dalam kode berikut, nilai apa yang akan MyNullableInt
dimiliki jika tidak pernah ditetapkan secara eksplisit?
class MyClass
{
public int? MyNullableInt;
}
(Sepertinya jawabannya hampir pasti salah satunya null
atau 0
, tapi yang mana itu?)
int? x;
dan melihat apa hasilnya?Jawaban:
Nilai default untuk
int?
- dan untuk semua jenis nullable yang menggunakan "tipe?" deklarasi - adalahnull
.Mengapa ini terjadi:
int?
adalah gula sintaksis untuk tipe Nullable <T> (di mana T adalahint
), sebuah struct. ( referensi )Nullable<T>
jenis memiliki HasValue bool anggota, yang ketikafalse
, membuatNullable<T>
contoh "bertindak seperti" sebuahnull
nilai. Secara khusus, metode Nullable <T> .Equals diganti untuk ditampilkantrue
saatNullable<T>
withHasValue == false
dibandingkan dengannull
nilai sebenarnya .null
.bool
variabel di C # adalahfalse
( referensi ). Oleh karena itu,HasValue
properti dari sebuahNullable<T>
instance default adalahfalse
; yang pada gilirannya membuatNullable<T>
instance itu sendiri bertindak seperti itunull
.sumber
int? x = null;
menjadiint? x;
, saya mendapatkan kesalahan kompiler lebih jauh di dalam kode: "Penggunaan variabel lokal x yang tidak ditetapkan".Field 'id' is never assigned to, and will always have its default value 0
. Aneh bukan?Saya merasa penting untuk membagikan
Nullable<T>.GetValueOrDefault()
metode yang sangat berguna saat bekerja dengan perhitungan matematika yang menggunakan nilaiNullable<int>
aliasint?
. Ada kalanya Anda tidak perlu memeriksaHasValue
properti dan Anda dapat menggunakanGetValueOrDefault()
saja.sumber
sumber