我必须将我的if语句设置为
if(Test == "test1" || Test == "test2" || Test == "test3")
{
//do something
}
Run Code Online (Sandbox Code Playgroud)
有没有办法有类似的东西
if(Test == "test1":"test2":"test3")
Run Code Online (Sandbox Code Playgroud)
SLa*_*aks 17
是.
if (new [] { "test1", "test2", "test3" }.Contains(Test))
Run Code Online (Sandbox Code Playgroud)
你甚至可以写一个扩展方法:
public static bool IsAnyOf<T>(this T obj, params T[] values) {
return values.Contains(T);
}
if (Test.IsAnyOf("test1", "test2", "test3"))
Run Code Online (Sandbox Code Playgroud)
为获得最佳性能,您可以进行带有两个或三个参数但不使用数组的重载.
Dan*_*son 17
您编写的代码没有任何问题.这很容易理解,但您可以尝试:
switch (Test)
{
case "test1":
case "test2":
case "test3":
//your code here
break;
default :
//else code
break;
}
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,这比你原来的if语句要冗长得多,而且不是很明显它的用途,但它是各种各样的答案.它将编译为非常有效的中间代码.实际上,如果要相信这篇文章,那么它可以编译为比帖子中的if语句更高效的代码,具体取决于编译器是否将这些值视为"相邻".
你可以做些什么来缩短你的陈述如下:
if (new[] { "test1", "test2", "test2" }.Contains(Test))
{
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
771 次 |
| 最近记录: |