Мне нравится оператор с нулевым коалесцированием, потому что он упрощает присвоение значения по умолчанию для типов с нулевым значением.
int y = x ?? -1;
Это здорово, если только мне не нужно делать что-то простое с x
. Например, если я хочу проверить Session
, то обычно мне приходится писать что-то более подробное.
Я хотел бы сделать это:
string y = Session["key"].ToString() ?? "none";
Но вы не можете, потому что .ToString()
вызывается до нулевой проверки, поэтому он терпит неудачу, если Session["key"]
равно null. В итоге я делаю это:
string y = Session["key"] == null ? "none" : Session["key"].ToString();
Это работает и, на мой взгляд, лучше, чем трехстрочная альтернатива:
string y = "none";
if (Session["key"] != null)
y = Session["key"].ToString();
Даже если это работает, мне все еще интересно, есть ли лучший способ. Кажется, что мне всегда приходится ссылаться Session["key"]
дважды; один раз для проверки и снова для задания. Любые идеи?