![](/img/trans.png)
[英]Why can I assign null to value of Type “struct Nullable<T>” but not to my struct?
[英]Why should convert null value to nullable struct
我有一個函數,它返回一個可為空的struct
。 我注意到兩個類似的案例
第一:效果很好:
public static GeometricCircle? CircleBySize(GeometricPoint point, double size)
{
if (size >= epsilon)
return null;
return new GeometricCircle(point.Position, new Vector(1, 0, 0), size, true);
}
第二:需要將null值轉換為GeometricCircle嗎?
public static GeometricCircle? CircleBySize(GeometricPoint point, double size)
{
return size > epsilon ? new GeometricCircle(point.Position, new Vector(1, 0, 0), size, true) : (GeometricCircle?)null;
}
有人知道有什么區別嗎?
在第一個示例中,當size >= epsilon
時,返回null
。 編譯器知道null
是可空類型的有效值。
在第二個示例中,您使用的是?:
三元運算符 ,它帶有自己的一組規則。
condition ? first_expression : second_expression;
MSDN告訴我們(我的重點)......
first_expression
和second_expression
的類型必須相同,或者從一種類型到另一種類型必須存在隱式轉換 。
這里的關鍵區別是null
不能隱式轉換為GeometricCircle
( first_expression
的類型)。
所以你必須明確表達 ,使用一個轉換為GeometricCircle?
,然后可以隱式轉換為GeometricCircle
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.