Tre*_*ack 54 c# null nullable switch-statement
C#switch语句的默认标签如何处理可以为空的枚举?
默认标签是否会捕获空值和任何未处理的案例?
Tre*_*ack 80
如果它为null,它将达到默认标签.
public enum YesNo
{
Yes,
No,
}
public class Program
{
public static void Main(string[] args)
{
YesNo? value = null;
switch (value)
{
case YesNo.Yes:
Console.WriteLine("Yes");
break;
case YesNo.No:
Console.WriteLine("No");
break;
default:
Console.WriteLine("default");
break;
}
}
}
Run Code Online (Sandbox Code Playgroud)
该程序将打印default.
除非处理null.
public class Program
{
public static void Main(string[] args)
{
YesNo? value = null;
switch (value)
{
case YesNo.Yes:
Console.WriteLine("Yes");
break;
case YesNo.No:
Console.WriteLine("No");
break;
case null:
Console.WriteLine("NULL");
break;
default:
Console.WriteLine("default");
break;
}
}
}
Run Code Online (Sandbox Code Playgroud)
打印NULL.
如果您有一个以后添加的未处理的枚举值:
public enum YesNo
{
Yes,
No,
FileNotFound,
}
public class Program
{
public static void Main(string[] args)
{
YesNo? value = YesNo.FileNotFound;
switch (value)
{
case YesNo.Yes:
Console.WriteLine("Yes");
break;
case YesNo.No:
Console.WriteLine("No");
break;
default:
Console.WriteLine("default");
break;
}
}
}
Run Code Online (Sandbox Code Playgroud)
它仍然打印default.
| 归档时间: |
|
| 查看次数: |
23158 次 |
| 最近记录: |