Показать сообщение отдельно
Старый 01.08.2018, 20:47
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 4  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
и что именно написано про последний пункт
Кусочек текста. Вообще там дофига чего написано про оператор "элвис", но мне в лом копировать из пдф из-за дурацкой прокрутки.
Цитата:
Null-conditional operator (C# 6)
The ?. operator is the null-conditional or “Elvis” operator, and is new to C# 6. It
allows you to call methods and access members just like the standard dot operator,
except that if the operand on the left is null, the expression evaluates to null instead
of throwing a NullReferenceException:
System.Text.StringBuilder sb = null;
string s = sb?.ToString(); // No error; s instead evaluates to null
The last line is equivalent to:
string s = (sb == null ? null : sb.ToString());
Upon encountering a null, the Elvis operator short-circuits the remainder of the
expression. In the following example, s evaluates to null, even with a standard dot
operator between ToString() and ToUpper():
System.Text.StringBuilder sb = null;
string s = sb?.ToString().ToUpper(); // s evaluates to null without error

Цитата:
что в той книге про foreach, именно в контексте вопроса и что именно написано про последний пункт
Там ты не найдешь именно по контексту вопроса конкретный ответ. В книжке есть подробное описание работы этого цикла, что делает компилятор при этом, про касты, боксинг и много всего. Если я сам правильно понял твой вопрос, то разница в том, что для массива тип известен компилятору сразу, и дополнительный внутренний каст не нужен. Для дженерик листа потребуется каст.
Если я не прав, поправь.
__________________
Ко мне можно и нужно обращаться на ты)