private string? typeOfContract
{
get { return (string?)ViewState["typeOfContract"]; }
set { ViewState["typeOfContract"] = value; }
}
Nanti di kode saya gunakan seperti ini:
typeOfContract = Request.QueryString["type"];
Saya mendapatkan kesalahan berikut pada deklarasi typeOfContract
baris yang menyatakan:
Jenis 'string' harus berupa jenis nilai yang tidak dapat dinolkan untuk menggunakannya sebagai parameter 'T' dalam jenis umum atau metode 'System.Nullable <T>'
Ada ide? Pada dasarnya, saya ingin memastikan bahwa "type"
ada QueryString
sebelum melakukan tindakan.
string?
untuk memberi tahu dunia bahwa string ini mungkin nol. Ref: youtube.com/watch?v=VdC0aoa7ungAnda membuatnya menjadi rumit.
string
sudah nihil. Anda tidak perlu membuatnya lebih null. Hapus?
di tipe properti.sumber
string tidak bisa menjadi parameter untuk Nullable karena string bukan tipe nilai. String adalah tipe referensi.
string s = null;
adalah pernyataan yang sangat valid dan tidak perlu menjadikannya nullable.
private string typeOfContract { get { return ViewState["typeOfContract"] as string; } set { ViewState["typeOfContract"] = value; } }
harus bekerja karena sebagai kata kunci.
sumber
String adalah tipe referensi, jadi Anda tidak perlu (dan tidak bisa) menggunakan di
Nullable<T>
sini. Cukup deklarasikan typeOfContract sebagai string dan cukup periksa null setelah mendapatkannya dari string kueri. Atau gunakan String.IsNullOrEmpty jika Anda ingin menangani nilai string kosong sama seperti null.sumber
Untuk nullable, gunakan
?
dengan semua primitif C # , kecuali string.Halaman berikut memberikan daftar C # primitif : http://msdn.microsoft.com/en-us/library/aa711900(v=vs.71).aspx
sumber
Harap dicatat bahwa dalam versi C # yang akan datang yaitu 8, jawabannya tidak benar.
All the reference types are non-nullable by default
dan Anda sebenarnya dapat melakukan hal berikut:public string? MyNullableString; this.MyNullableString = null; //Valid
Namun,
public string MyNonNullableString; this.MyNonNullableString = null; //Not Valid and you'll receive compiler warning.
Yang penting di sini adalah menunjukkan maksud kode Anda. Jika "maksud" adalah bahwa jenis referensi bisa jadi null, maka tandai sehingga jika tidak menetapkan nilai null ke non-nullable akan menghasilkan peringatan compiler.
Info lebih lanjut
Kepada moderator yang menghapus semua jawaban, jangan lakukan itu. Saya sangat yakin jawaban ini menambah nilai dan menghapus hanya akan membuat seseorang tidak mengetahui apa yang benar pada saat itu. Karena Anda telah menghapus semua jawaban, saya memposting ulang jawaban di sini. Tautan yang dikirimkan tentang "duplikat" hanyalah pembukaan dari beberapa orang dan menurut saya itu bukan rekomendasi resmi.
sumber