0

私はこれを正しい方法で使用していますか?私が理解している限り、次のチェックは false である必要があります。

 int myVal = 37;
 if (Enumerable.Range(0, 10).Contains(myVal))
    // Do something
 else if (Enumerable.Range(11, 33).Contains(myVal))
    // Do somethiong else

しかし、//Do somethiong else実行されるケースがいくつかあるようです。このままでは使えないEnumerable.Rangeのでしょうか?

4

3 に答える 3

18

の署名Enumerable.Rangeは手がかりを提供します:

public static IEnumerable<int> Range(
    int start,
    int count
)

最初のパラメータはstartと呼ばれます。2 番目はcountと呼ばれます。したがって、2 回目の呼び出しでは、11 から始まる 33 個の値が返され、これには 37 個が含まれます。

于 2010-12-15T16:07:30.417 に答える
10

この特定の例の場合、値が特定の範囲内にあることを確認するためだけに、この方法で列挙を作成するのは非効率的です。if (x < y)おそらくより良いです。

于 2010-12-15T16:08:31.847 に答える
1

すべての値がチェックされることになり、少し混乱します。

int myVal = 37;
if (myVal >= 0 && myVal <= 10)
    // Do something
else if (myVal <= 33)
    // Do somethiong else
于 2010-12-15T16:09:55.217 に答える