用c#中的范围检查条件(不使用if else语句)

时间:2017-01-02 12:41:20

标签: c#

我们遵循的基本理念是

if (i > 0 && i < 100) {

} else if (i > 100 && 1 < 150) {

}

这是范围检查的基本思路..

有没有什么好方法可以检查这些类型的条件。

提前感谢您的帮助!

3 个答案:

答案 0 :(得分:1)

int endX = 200;

点击下面的链接,你会得到@Steve

的区别
 #include<stdio.h>

int main()
{
int arr[3] = {2, 3, 4};
char *p;
p = arr;
p = (char*)((int*)(p));
printf("%d, ", *p);
p = (int*)(p+1);
printf("%d", *p);
return 0;
}

[Switch case: can I use a range instead of a one number

答案 1 :(得分:0)

使用三元运算符

 var range = 
     i < 100? "Range1":
     i < 150? "Range2":
     i < 200? "Range3":
     i < 250? "Range4":
     i < 300? "Range5": 
              "Range6";

这只是展示技术的示例。显然,您必须使其适应您的代码目标和适当的范围定义。 (顺便说一句,在您的示例中,使用if- else if,您的代码错过了值100.您需要确定应包含哪个范围100,并将其中一个不等运算符更改为<=>=

答案 2 :(得分:0)

你可以通过使用List的边界来切换构造“句柄”范围:

        List<int> bounds = new List<int>() {int.MinValue, 0, 100, 150, 200, 300, int.MaxValue };

        switch (bounds.IndexOf(bounds.Last(x => x < j)))
        {
            case 0: // <=0
                break;

            case 1: // > 0 and <=100
                break;
            case 2: // > 100 and <= 150
                break;
            case 3: // > 150 and <=200
                break;
            case 4: // > 200 and <=300
                break;

            case 5: // >300
                break;
        }

您可能需要在

中添加一些额外的支票