C#Smart If Statement

The*_*One 0 c# if-statement

有没有办法在更短更智能的方式中重写这些语句?请注意,检查var for null很重要,因为我想避免异常.

C#:

if(var ==n ull)
{
    return 0;
}

if(var.ToString() == "A")
{
    return 1;
}
else if(var.ToString() == "B")
{
    return 2;
}
else 
{
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Ren*_*ogt 20

您可以使用三元运算符和空条件运算符:

return var?.ToString() == "A" ? 1 : 0;
Run Code Online (Sandbox Code Playgroud)

如果是,则?.返回null条件运算符(),如果不是则返回.nullvarnullvar.ToString()varnull

由于null不等于"A",三元运算符返回:

  • 0如果varnullvar.ToString()不是"A"
  • 1如果var不是null,var.ToString()"A".

万一你不能使用C#6(它提供空条件运算符):

return var != null && var.ToString() == "A" ? 1 : 0;
Run Code Online (Sandbox Code Playgroud)


Fab*_*jan 7

除了Rene Vogt的回答,你可以使用switch语句结合null条件运算符.它使代码更具可读性:

switch (var?.ToString())
{
   case "A":
       return 1;
   case "B":
       return 2;
   default:
       return 0;
}
Run Code Online (Sandbox Code Playgroud)

  • +1,如果问题最初是这样的话会写,但不会更新我的答案,因为问题可能会再次改变:) (2认同)