Мені подобається оператор, що поєднує null, тому що він дозволяє легко призначити значення за замовчуванням для змінних типів.
int y = x ?? -1;
Це чудово, за винятком випадків, коли мені потрібно зробити щось просте x
. Наприклад, якщо я хочу перевірити Session
, то мені зазвичай доводиться писати щось більш багатослівне.
Я б хотів, щоб я міг зробити це:
string y = Session["key"].ToString() ?? "none";
Але ви не можете, тому що .ToString()
викликується перед нульовою перевіркою, тому вона не працює, якщо Session["key"]
є нульовою. Я закінчую це:
string y = Session["key"] == null ? "none" : Session["key"].ToString();
Це працює і, на мою думку, краще, ніж трирядкова альтернатива:
string y = "none";
if (Session["key"] != null)
y = Session["key"].ToString();
Хоча це працює, мені все одно цікаво, якщо є кращий шлях. Здається, незалежно від того, на що я завжди маю посилання Session["key"]
двічі; один раз для перевірки, і знову для виконання завдання. Будь-які ідеї?
.?
), як у Groovy .