Ash*_*osh 8 .net c# static switch-statement
假设我有一堆静态字段,我想在交换机中使用它们:
public static string PID_1 = "12";
public static string PID_2 = "13";
public static string PID_3 = "14";
switch(pid)
{
case PID_1:
//Do something 1
break;
case PID_2:
//Do something 2
break;
case PID_3:
//Do something 3
break;
default:
//Do something default
break;
}
Run Code Online (Sandbox Code Playgroud)
由于C#不允许在开关内部使用非const语句.我想了解这种设计的意图是什么.我应该如何在c#中执行上述操作?
Ser*_*rvy 18
看起来这些字符串值应该只是常量.
public const string PID_1 = "12";
public const string PID_2 = "13";
public const string PID_3 = "14";
Run Code Online (Sandbox Code Playgroud)
如果这不是一个选项(它们实际上是在运行时更改),那么您可以将该解决方案重构为一系列if/else if语句.
至于案例陈述为何必须保持不变; 通过使它们保持不变,它可以使语句更加优化.它实际上比一系列if/else if语句更有效(尽管如果你没有很多需要花费很长时间的条件检查,这并不是很明显).它将生成等效的哈希表,并将case语句值作为键.如果值可以改变,则不能使用该方法.
Mr *_*ood 14
我知道这是一个老问题,但有一种方法没有包含在其他不涉及改变方法的答案中:
switch(pid)
{
case var _ when pid == PID_1:
//Do something 1
break;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12798 次 |
| 最近记录: |