2015-01-09 3 views
-2

Я хочу проверить, нет ли List<Tuple<T, T>>. Использование these методов для проверки, если List<string> пуст, я заметил, что один из проверки не работает в моем случае:Проверка наличия в списке <Tuple<T, T>

List<Tuple<byte, string>> intermediateResult = new List<Tuple<byte, string>>(); 

//not working 
if(intermediateResult!= null) 
    Console.WriteLine("not empty"); 
else 
    Console.WriteLine("empty"); 

//working 
if(intermediateResult.Any()) 
Console.WriteLine("not empty"); 
else 
Console.WriteLine("empty"); 

Может кто-нибудь сказать, что первая проверка не работает?

+3

Что вы ожидали? 'intermediateResult' никогда не будет пустым, потому что вы только что назначили новый экземпляр. –

+0

? Это не ноль, поскольку вы только что это сделали? – StuartLC

+0

Да, я просто проверил пример с сайта, и он тоже не работает. – gotqn

ответ

1

объяснение не рабочей части: -

это не работает, потому что вы intializtion вашей коллекции, как этот

List<Tuple<byte, string>> intermediateResult = new List<Tuple<byte, string>>(); 

когда вы инициализировать так, чем intermediateResult не является нулевым. что является правдой.

0

Эта строка кода

List<Tuple<byte, string>> intermediateResult = new List<Tuple<byte, string>>(); 

создает новый экземпляр List<Tuple<byte, string>> и присваивает его intermediateResult - так, очевидно, intermediateResult не является нулевым после выполнения этой строки.

1

С этой строкой вы проверяете, был ли список выделен или нет. Таким образом, вы проверяете правильное поведение новой команды. Пустой список по-прежнему будет иметь адрес в памяти.

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