C#如何检查if语句的哪一部分是正确的

kop*_*nce 6 c# if-statement

我想知道如何检查if语句的哪一部分是正确的.例如,如果你有这个:

int a = 1, b, c, d;
    if(a > 0 || b > 1 || c > 2 || d > 3)
    {
        //do stuff
    }
Run Code Online (Sandbox Code Playgroud)

现在在这种情况下,使得if正确的是a.那你怎么验证呢?基本上你可以把它们放在4个不同的if中,但是如果你必须为每一个做一个重复的代码,你可能会想出一些方法,但是实际上没有办法传递一些值吗?

das*_*ght 8

在您不仅需要知道整体结果而且还需要知道产生结果的项目的情况下,一种方法true是将条件放入数组中,并||自己执行OR链:

var conditions = new[] {a > 0, b > 1, c > 2, d > 3};
var whichOne = Array.IndexOf(conditions, true);
if (whichOne >= 0) {
    Console.WriteLine("Condition number {0} is true", whichOne);
} else {
    Console.WriteLine("The condition is false");
}
Run Code Online (Sandbox Code Playgroud)

请注意,这种方法与||链条的不同之处在于它不会使评估短路.换句话说,在调用之前将评估所有四个条件IndexOf.