2017-01-12 2 views
-3

В C#, если объект List() не имеет значения NULL, это также означает, что Count всегда будет больше 0?Является ли граф объекта с нулевым списком всегда больше 0?

Например, если у вас есть объект intList типа List<int>, является ли следующий код избыточным?

if (intList != null && intList.Count > 0) { 
    // do something 
} 
+6

'новый список () .Count' // => 0 –

+1

нет, он может быть не пустым и пустым –

+2

. Какого рода люди могут опробовать полезные вопросы? Зачем беспокоиться? –

ответ

7

Нет, это вполне допустимо, чтобы иметь пустой список:

List<int> intList = new List<int>(); 
bool isEmpty = intList.Count == 0; // true 

Если вы хотите знать, если список не пуст и содержит, по меньшей мере, один элемент можно также использовать новый C № 6 null conditional operator:

List<int> intList = null; 
bool isNotEmpty = intList?.Count > 0; // no exception, false 
+0

И тоже неплохой ответ! ВАУ! –

+0

Спасибо Тим! Это прекрасно отвечает.И спасибо за подсказку об операторе нулевого условия. – Wellspring

1

Нет, этот код не является избыточным. intList может быть null или intList.Count == 0. Вот некоторые случаи:

List<int> intList = null; 

Console.WriteLine(intList); // it will print 'null' 

intList = new List<int>(); 

Console.WriteLine(intList.Count); // it will print '0' 

В современном C# можно использовать Null-conditional operator упростить проверку, хотя. Этот синтаксис эквивалентен по производительности тестированию для null, это просто синтаксический сахар, чтобы упростить эту общую проверку.

if (intList?.Count > 0) { 
    // do something 
} 
1

Все приведенные выше ответы объясняются самостоятельно. Просто попробуйте добавить немного больше

если (IntList! = NULL & & intList.Count> 0) Здесь счетчик проверяется, чтобы убедиться, что IntList имеет по крайней мере один элемент в нем, прежде чем выполнять какие-либо операции на список. Наиболее распространенный случай использования, который мы проверяем для подсчета, кроме того, для проверки нулевого значения - это когда мы хотим перебирать элементы списка.

if (intList != null && intList.Count > 0) 
{ 
    foreach(var item in intList) 
    { 
     //Do something with item. 
    } 
} 

Если список пуст, нет смысла пытаться его перебирать.

Но если intList не является нулевым, что НЕ означает, что он имеет значение count> 0. В список должны быть добавлены элементы, если счетчик должен быть больше нуля.

Смежные вопросы