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