有时我需要使用!=两次,三倍或四倍,有没有更好的方法呢?
if (result != 1 && result != 12)
{
do something
}
if (result != 1 && != 12)
{
do something
}
第二种选择会更好,但我们都知道它不起作用
答案 0 :(得分:3)
在语言中,没有像您建议的那样直接的方法:
// Wont compile
if (result != 1 && != 12) { }
如果您只需要检查几个值,我将使用显式比较。但是,您可以创建一个值集合,检查结果是否不在合列中:
// using System.Linq;
if (!(new []{ 1, 2 /*, ... */ }).Contains(result)) { }
如注释中所建议,您还可以编写扩展方法。这需要一个公共静态类:
public static class ExtensionMethods
{
public static bool NotIn(this int num, params int[] numbers)
{
return !numbers.Contains(num);
}
}
// usage
result.NotIn(1, 12);
result.NotIn(1, 12, 3, 5, 6);
如果您不仅要比较整数,还可以编写一个通用方法:
public static bool NotIn<T>(this T element, params T[] collection)
{
return !collection.Contains(element);
}
// Works with different types
result.NotIn(1, 2, 3, 4);
"a".NotIn("b", "c", "aa");
答案 1 :(得分:0)
您可能可以使用Linq All()
方法
if((new int[]{1,12,13}).All(x => x != result))
{
// do something
}