[英]Why does the == operator work for Nullable<T> when == is not defined?
[英]Why ?: operator does not work with nullable<int> assignation?
我正在為我的數據庫創建一個對象,我發現了一個奇怪的東西,我不明白:
我有一個應該通過ID引用“語言”的對象,但是這可以為null,所以我的屬性是一個int?(Nullable<int>)
所以我首先嘗試使用對象初始化器:
myObject = new MyObject()
{
myNullableProperty = language == null ? null : language.id;
}
但它不起作用! 它告訴我null不能轉換為int
但是,如果我在if/else
結構中,我可以在var中放置null,然后將其分配給我的屬性。
為什么這樣做?
您可以嘗試將null
為int?
因為?:
運算符需要兩個操作數返回相同的類型:
myNullableProperty = language == null ? (int?)null : language.id
這是因為類型不匹配。 必須將null值轉換為int類型。
原因是,何時使用?
運算符左邊和右邊:
需要來自相同類型和typeof(null)!=typeof(int)
所以:
myNullableProperty = language == null ? (int?)null : language.id;
很可能null被解釋為很明顯無法分配給int的對象。 您可能想使用myNullableProperty = language == null ? (int?)null : language.id;
myNullableProperty = language == null ? (int?)null : language.id;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.