首先,如果标题不清晰或具有描述性,请对不起; 我不知道该写些什么.
我想知道是否有更好的方法来执行此操作:
bool result = variable1.innerValue.level2.innerValue == 1 ||
variable1.innerValue.level2.innerValue == 2 ||
variable1.innerValue.level2.innerValue == 3;
Run Code Online (Sandbox Code Playgroud)
我们写不出类似的东西:
bool result = variable1.innerValue.level2.innerValue == (1 || 2 || 3);
Run Code Online (Sandbox Code Playgroud)
这将产生语法错误.
有任何想法吗?
您可以将集合用作占位符,并且Enumerable.Contains:
if(new[]{1, 2, 3}.Contains(variable1.innerValue.level2.innerValue))
{
}
Run Code Online (Sandbox Code Playgroud)
或者,为了它的价值,这个扩展:
public static bool In<T>(this T source, params T[] list)
{
if(null==source) throw new ArgumentNullException("source");
return list.Contains(source);
}
Run Code Online (Sandbox Code Playgroud)
这使你能够写下这个:
if(variable1.innerValue.level2.innerValue.In(1, 2, 3))
{
}
Run Code Online (Sandbox Code Playgroud)
你最喜欢的C#扩展方法是什么?(codeplex.com/extensionoverflow)