Biasanya penggunaan utama dari tanda tanya adalah untuk persyaratan x ? "yes" : "no"
,.
Tetapi saya telah melihat kegunaan lain untuk itu tetapi tidak dapat menemukan penjelasan tentang penggunaan ?
operator ini, misalnya.
public int? myProperty
{
get;
set;
}
int
tipe danInteger
kelas yang sesuai , misalnya.Ini adalah singkatan untuk
Nullable<int>
.Nullable<T>
digunakan untuk memungkinkan tipe nilai diatur kenull
. Jenis nilai biasanya tidak boleh nol .sumber
value types
tidak 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. Diabaikanreference types
, seperti objek atau MyClass, akan, sebaliknya, menjadi nol. Anda mungkin ingin membaca tentang perbedaan antara tipe nilai dan tipe referensi.Di
itu ? mendeklarasikan kalimat if . Di sini: x mewakili kondisi boolean; Bagian sebelum : adalah kalimat lalu dan bagian sesudahnya adalah kalimat lain .
Dalam, misalnya,
itu ? mendeklarasikan tipe nullable, dan berarti tipe sebelum itu mungkin memiliki nilai null.
sumber
return value ? value : "isNull";
memberitahu saya bahwastring value
isnt convertable menjadi bool.sumber
itu menyatakan bahwa jenisnya nullable.
sumber
penggunaan praktis:
sumber
Untuk menambahkan jawaban di atas, berikut adalah contoh kode
Ini akan memberikan kesalahan kompilasi:
Perhatikan bahwa tidak ada kesalahan kompilasi untuk NullableTest. (perhatikan? dalam deklarasi t2)
sumber
int?
adalah singkatanNullable<int>
. Kedua bentuk itu saling dipertukarkan.Nullable<T>
adalah operator yang dapat Anda gunakan dengan tipe nilaiT
untuk membuatnya diterimanull
.Dalam kasus Anda tidak tahu itu: nilai jenis yang jenis yang menerima nilai-nilai sebagai
int
,bool
,char
dll ...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.
sumber