有没有更有效的方式使用!=?

时间:2019-06-07 06:58:56

标签: c#

有时我需要使用!=两次,三倍或四倍,有没有更好的方法呢?

if (result != 1 && result != 12)
{
do something 
}


if (result != 1 && != 12)
{
do something 
}

第二种选择会更好,但我们都知道它不起作用

2 个答案:

答案 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
}