旧方式
i
新方式?
int? myFavoriteNumber = 42;
int total = 0;
if (myfavoriteNumber.HasValue)
total += myFavoriteNumber.Value *2;
答案 0 :(得分:4)
零传播算子?如它所说,将传播空值。在int?.Value的情况下,这是不可能的,因为Value的类型int不能为null(如果可能的话,操作将变为null * 2
,这意味着什么?)。因此,旧方式'仍然是目前的做法。
答案 1 :(得分:3)
试试这个:
int? myFavoriteNumber = 42;
total += (myFavoriteNumber??0) *2;
如果myFavoriteNumber?? 0
为空,表达式(myFavoriteNumber
)返回0。
答案 2 :(得分:3)
我认为您误解了null
条件运算符的使用。
当其中一个步骤产生null
时,它用于将 ifs 的链短路到null
。
像这样:
userCompanyName = user?.Company?.Name;
请注意,如果userCompanyName
或null
为user
,user.Company
将包含null
。
在您的示例中,total
无法接受null
,因此更多关于使用??比什么都重要:
total = (myFavoriteNumber ?? 0) * 2;
答案 3 :(得分:0)
试试这个
ServerName localhost:81
HostnameLookups Off