Синтаксис оператора if можна представити наступним чином:
//скорочена форма
if (вираз_лог_типу) оператор;
// повна форма
if (вираз_лог_типу) оператор1;
else оператор2;
|
|
Тернарна операція має наступний синтаксис:
[перший операнд - умова] ? [другий операнд] : [третій операнд].
Тут одразу три операнди. Залежно від умови тернарна операція повертає другий або третій операнд: якщо умова дорівнює true, то повертається другий операнд; якщо умова дорівнює false, то третій.
Наприклад:
int x=3;
int y=2;
Console.WriteLine("Натисніть + або -");
string selection = Console.ReadLine();
int z = selection=="+"? (x+y) : (x-y);
Console.WriteLine(z);
Тут результатом тернарної операції є змінна z. Якщо ми вводимо "+", то z буде дорівнювати другому операнду - (x+y). Інакше z буде дорівнювати третьому операнду.
class Person {
public string Name { get; set; }
public Address HomeAddress { get; set; }
}
class Address {
public string City { get; set; }
}
Person person = null;
// Без ?. буде помилка NullReferenceException
string city = person?.HomeAddress?.City;
// city буде null, якщо person або HomeAddress дорівнюють null
Console.WriteLine(city); // Виводить: нічого, оскільки city дорівнює null
У цьому прикладі, замість того щоб писати перевірки на null для person та HomeAddress, оператор ?. автоматично повертає null, якщо будь-яке зі значень зліва дорівнює null
Оператор ?? використовується для присвоєння значення за замовчуванням, якщо вираз зліва дорівнює null. Він дозволяє задати значення, яке буде використано, якщо основний об'єкт або вираз мають значення null.
string name = null;
// Присвоїмо значення "Default Name", якщо name дорівнює null
string displayName = name ?? "Default Name";
Console.WriteLine(displayName); // Виводить: Default Name
У цьому прикладі, якщо name дорівнює null, то displayName отримає значення "Default Name".
Ці оператори часто використовуються разом для безпечного доступу до об'єктів та надання значень за замовчуванням.
class Car {
public string Model { get; set; }
}
Car car = null;
// Використовуємо ?. для безпечного доступу та ?? для значення за замовчуванням
string carModel = car?.Model ?? "Unknown Model";
Console.WriteLine(carModel); // Виводить: Unknown
Коли використовувати:
Оператор ?.: Використовуйте його, щоб уникнути перевірок на null при доступі до членів об'єктів, коли є ймовірність, що об'єкт може бути null.
Оператор Ці оператори роблять код більш читабельним та захищеним від помилок, пов'язаних з null, що особливо важливо у великих проектах з широким використанням об'єктів.