的Nullable<T>
的定義是:爲什麼我不能寫Nullable <Nullable <int>>?
[SerializableAttribute]
public struct Nullable<T> where T : struct, new()
約束where T : struct
意味着T
只能是值類型。所以我非常好理解,我不能寫:
Nullable<string> a; //error. makes sense to me
因爲string
是引用類型,不是值類型。但我不明白爲什麼我不能寫
Nullable<Nullable<int>> b; //error. but why?
爲什麼不允許?畢竟,Nullable<int>
是一個值類型,因此它可以是Nullablle<T>
的類型參數。
當我編譯它ideone,它給這個錯誤(ideone):
錯誤CS0453: '詮釋' 的類型必須是一個非空值類型,以便在通用類型或方法使用它作爲類型參數「T」「System.Nullable」 編譯失敗:1個誤差(S),0警告
錯誤是什麼? – asawyer
對不起,我的回答是錯誤的。 'new Nullable();'編譯(產生一個值爲null的int?'),儘管默認構造函數沒有記錄。 –
BoltClock
是的,答案出現在您嘗試編譯代碼時應該得到的錯誤中。 – BoltClock