Не пойму что за знак "?" после типа переменной. Его предназначение и свойства

Открыл для себя вот такую новую синтаксическую "конструкцию". Не могу найти ответ в гугле. Подскажите как это правильно называется и какие функции у этой "штуки". Как я догадался логически, одна из фишек это метод HasValue, что тоже кажется странным для меня, ибо почему не использовать value == null ? 1 : 0; Понимаю, что скорее всего вопрос глупый, но я только осваиваю язык, поэтому вот...)введите сюда описание изображения


Ответы (1 шт):

Автор решения: Aarnihauta

? оператор используется в коде следующим образом:

  1. SomeType? myVariable, данная запись эквивалентна Nullable<SmthType> myVariable, где SmthType - struct. В C# 8.0 были добавлены nullable reference types, позволяющие делать nullable еще и классы.

  2. ? используется при вызове методов у классов. Это проверка на null. В данном случае, если объект класса myClassObject имеет значение null - то, метод не будет вызван.

myClassObject?.SmthMethod();

Тоже самое, что и:

if(myClassObject != null)
{
   myClassObject.SmthMethod();
}

  1. Для условных конструкций:
int a = 0;
if(boolVariable == true)
{
   a++
}
else 
{
   a--;
}

Почти тоже самое, только результат нужно записывать в какую-нибудь переменную

int a = 0;
int c = boolVariable == true ? a++ : a--; //c - результат выражения a++ или a--
→ Ссылка