2016-06-08 3 views
0

Допустим, у меня есть следующий класс:C#: Возвращение Null-условного оператора для объектов

class Class1 
{ 
    public string MyProp { get; set; } 
} 

Тогда давайте сделаем небольшой тест:

Class1 myClass1 = null; 
Console.WriteLine(myClass1?.MyProp ?? "Ohoh"); // Print "Ohoh" 
Console.WriteLine(myClass1.MyProp ?? "Ohoh"); // Null Exception 

Какой тип возврата из "myClass1 ?." ?
Почему у меня напечатан «Ohoh»?

спасибо.

ответ

1

(.?) Используется для проверки нулевого значения перед выполнением доступа к члену. Он возвращает null, если проверяет значение null перед доступом к sayd, что операнд равен нулю

?? оператор возвращает левый операнд, если он не является нулевым, или правый операнд, если левый нуль

Итак, во второй строке проверка нулевого отказа, (.?) оператор возвращает null и? оператор возвращает правый операнд.

в третьей строке вы пытаетесь получить доступ к собственности без проверки нулевой, и у вас есть пустая ссылка исключение

+0

Вы сказали «(.?) Возвращает нуль». Затем, если он возвращает null, .MyProp должен выдать исключение. Но здесь это ничего не бросает. – zizou

+0

Oups, хорошо. Я сделал ошибку, вы правы. Это «myClass1? .MyProp», который возвращает null, а не «myClass1?». – zizou

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