Является ли if (items! = Null) лишним перед foreach (T item в items)? - PullRequest
77 голосов
/ 23 июня 2011

Я часто сталкиваюсь с кодом, подобным следующему:

if ( items != null)
{
   foreach(T item in items)
   {
        //...
   }
}

В принципе, условие if гарантирует, что блок foreach будет выполняться, только если items не равно нулю.Мне интересно, действительно ли необходимо условие if, или foreach справится со случаем, если items == null.

Я имею в виду, могу ли я просто написать

foreach(T item in items)
{
    //...
}

, не заботясь о том, является ли items нулем или нет?Является ли условие if лишним?Или это зависит от типа из items или от T?

Ответы [ 12 ]

0 голосов
/ 23 июня 2011

второй выкинет NullReferenceException с сообщением Object reference not set to an instance of an object.

0 голосов
/ 23 июня 2011

Тест необходим, потому что если коллекция пуста, foreach выдаст исключение NullReferenceExceptionНа самом деле это довольно просто попробовать.

List<string> items = null;
foreach(var item in items)
{
   Console.WriteLine(item);
}
...