運營商給的問題,我有一個可爲空雙C#第三,如果可空雙
MyNullableDouble = MyDouble == 0 ? null : MyDouble;
這引起了我一個問題:
無法確定條件表達式的類型,因爲沒有隱在''和'雙'之間的轉換
運營商給的問題,我有一個可爲空雙C#第三,如果可空雙
MyNullableDouble = MyDouble == 0 ? null : MyDouble;
這引起了我一個問題:
無法確定條件表達式的類型,因爲沒有隱在''和'雙'之間的轉換
你應該投Mydouble
,otherwi SE在左邊你有型double?
而在右側你有double
,所以類型是不等價的(而這正是異常說):
MyNullableDouble = MyDouble == 0 ? null : (double?)MyDouble;
是的,你不能做這樣的,既值應該是相同的數據類型。任何具體原因使用叔..如果其他...
您可以實現一種通用的方法來處理這種情況。 由於所有空類型有GetValueOrDefault
方法,可以寫爲不可爲空的結構相反的方法:
public static T? GetNullIfDefault<T>(this T value)
where T: struct
{
if(value.Equals(default(T)))
{
return null;
}
return value;
}
使用示例:
MyNullableDouble = MyDouble.GetNullIfDefault();
奇怪,因爲MyNullableDouble = MyDouble;沒有語法錯誤... – sprocket12
是的,因爲double可以隱式轉換爲nullableDouble,但是第三級操作符以不同的方式工作,有很多關於此的問題:請參閱[this one](http://stackoverflow.com/問題/ 8155618 /隱式轉換問題在一個三元條件)例如,並按照各種重複的問題 –
好的抱歉,我會搜查,但我不知道在那時會是這樣的問題。 – sprocket12