C# · 12月 24, 2021

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

我想知道如何检查if语句的哪一部分是正确的.例如,如果你有这个: int a = 1,b,c,d; if(a > 0 || b > 1 || c > 2 || d > 3) { //do stuff }

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

解决方法 在您不仅需要知道整体结果而且还需要知道结果为真的项目的情况下,一种方法是将条件放入数组中,并自己执行OR链接|| s: 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”);}

请注意,此方法与||不同因为它不会使评估短路.换句话说,在调用IndexOf之前将评估所有四个条件.