-1

次のコード行があります。コマンド リスト項目によると、if ブロックに入る必要がありますが、そこには入っていません。デバッグ モードint[] ckeysでは{int[0]}値がまったく表示されません。何が問題なのか教えていただけますか?

List<string> Command=new List<string>();
string ASCLICAL = "Callers:";
string ASCLIMEM= "Members:";
string ASCLINOCAL="NoCallers";

int[] ckeys = Command.Select((s, idx) => new { Str = s, Idx = idx })
                    .Where(p => p.Str == ASCLICAL)
                    .Select(p => p.Idx)
                    .ToArray();

if(ckeys == null) {
                    ckeys = Command.Select((s, idx) => new { Str = s, Idx = idx })
                            .Where(p => p.Str == ASCLINOCAL)
                            .Select(p => p.Idx)
                            .ToArray();
            }

コマンド リストの内容:

[0] = "300 has 0 calls (max unlimited) in 'ringall' strategy (173s holdtime), W:0, C:1, A:0, SL:0.0% within 0s"
[1] = "Members:"
[2] = "Local/409@from-internal/n (In use) has taken 1 calls (last was 64167 secs ago)"
[3] = "No Callers"
[4] = ""
4

2 に答える 2

1

null になることはありません。配列に要素が含まれていない場合は、常に要素が 0 の配列になります。

または を使用して、サイズが 0 より大きいかどうArray.Lengthかを確認できますArray.Count

   if (ckeys.Length == 0) {

   }
于 2013-06-07T09:46:04.250 に答える
1

ckeysnull ではありません。空です。あなたはに変更する必要がありckeys == nullますckeys.Length == 0

于 2013-06-07T09:46:44.307 に答える