Мне нравится оператор объединения с нулевым значением, потому что он упрощает присвоение значения по умолчанию для типов, допускающих значение 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 .