簡體   English   中英

為什么?:運算符不能使用nullable <int> 分配?

[英]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,然后將其分配給我的屬性。

為什么這樣做?

您可以嘗試將nullint? 因為?:運算符需要兩個操作數返回相同的類型:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM