2013-06-07 6 views
-1

У меня есть следующие строки кода. Согласно элементу списка команд, он должен идти в блок if, но он не собирается туда. В режиме отладки int[] ckeys показывает только {int[0]} не какое-либо значение, можете ли вы сказать, в чем проблема?, если проверка на нуль в массиве целочисленного типа - C#

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/[email protected]/n (In use) has taken 1 calls (last was 64167 secs ago)" 
[3] = "No Callers" 
[4] = "" 
+0

@jabaldonedo: Спасибо за исправление моих ошибок. –

ответ

1

Он никогда не будет нулевым. Если массив не содержит элементов, то он всегда будет массивом с 0 элементами.

Вы можете использовать Array.Length или Array.Count и проверить, если размер> 0

if (ckeys.Length == 0) { 

    } 
+0

в порядке, но как мы можем проверить элемент 0 в массиве в условии if? –

+0

'Array.Count'? !! –

+0

'! Ckeys.Any()' будет хорошо –

1

ckeys не пусто, пусто. Вы должны изменить ckeys == null на ckeys.Length == 0

+0

Спасибо вам большое за вашу помощь. –