3

私は次のものを持っています:

if (model.PartitionKey.Substring(2, 2) == "05" || 
    model.PartitionKey.Substring(2, 2) == "06")

私はもっ​​とこのようなものを持っています。model.PartitionKeyを2回繰り返す必要がない、これをコーディングするためのよりクリーンな方法はありますか?

4

7 に答える 7

11

これはどうですか:

if (new string[]{"05", "06"}.Contains(model.PartitionKey.Substring(2, 2))
    // ...

これにより、探している文字列を素敵なリストに自由に保持できます...

var lookingFor = new string[]{"05", "06"};
var substring = model.PartitionKey.Substring(2, 2);
if (lookingFor.Contains(substring))
{
    // ...
}

これは、探している文字列のリストが 2 つよりも長くなる場合に非常に役立ちます...また、これをセット ( HashSet<string>) に追加して、より効率的なルックアップを行うことができます - ただし、オーバーヘッドがゲインを食いつぶす可能性があるため、最初にこれをテストしてください.

于 2012-07-06T07:53:03.260 に答える
9

そのような場合には、拡張メソッドを使用します

public static bool In<T>(this T source, params T[] list)
{
   if (source = null)
       throw new NullReferenceException("Source is Null");

   return list.Contains(source);
}

そしてそれを次のように呼び出します

if (model.PartitionKey.Substring(2, 2).In("05", "06"))

拡張メソッドであるため、次のようなすべてのタイプに対して呼び出すことができます

if(myintegervariable.In(3, 4));

また

if(mybytevariable.In(23, 56, 34, 43, 87, 155));
于 2012-07-06T07:58:03.343 に答える
7
var keyString = model.PartitionKey.Substring(2, 2);
if (keyString == "05" || keyString == "06")
{
    // ...
}
于 2012-07-06T07:50:17.850 に答える
5

代替案として誰もスイッチを提供しなかったことに驚いています:)

switch (model.PartitionKey.SubString(2,2)) {
  case "05":
  case "06":
    // do stuff
    break;
  // other cases
  default:
    // like an else
}

詳細については、MSDNを参照してください。

于 2012-07-06T08:15:06.830 に答える
3

サブストリングを変数に保存できます。

var substring = model.PartitionKey.Substring(2, 2);
if (substring == "05" || substring == "06")

または、正規表現を使用できます。

if (Regex.IsMatch("^..0[56]", model.PartitionKey))

これはおそらく、コードを読んでいるときに正規表現をどれだけ簡単に理解できるかに少し依存します。

于 2012-07-06T07:50:07.620 に答える
1

Substring読みやすくするために、 out を変数に抽出してから、次のことをテストできます。

var partitionKeyBits = model.PartitionKey.Substring(2, 2);

if (partitionKeyBits == "05" || partitionKeyBits == "06") {

}

しかし、そうでなければそれはそれについてです。

于 2012-07-06T07:51:17.943 に答える
0

if (new []{"05", "06"}.Contains(model.PartitionKey.Substring(2, 2))

構文はかなりずれている可能性があります。修正を歓迎します:)

編集:new []

于 2012-07-06T07:53:04.997 に答える