如何将Nullable运算符与Null条件运算符一起使用?

时间:2016-03-13 12:55:01

标签: c# nullable null-conditional-operator null-propagation-operator

旧方式

i

新方式?

int? myFavoriteNumber = 42;
int total = 0;
if (myfavoriteNumber.HasValue)
  total += myFavoriteNumber.Value *2;

4 个答案:

答案 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;

请注意,如果userCompanyNamenulluseruser.Company将包含null。 在您的示例中,total无法接受null,因此更多关于使用??比什么都重要:

total = (myFavoriteNumber ?? 0) * 2;

答案 3 :(得分:0)

试试这个

ServerName localhost:81

HostnameLookups Off