Мне нравится оператор объединения значений NULL, потому что он позволяет легко присваивать значение по умолчанию для типов, допускающих значение NULL.
Это здорово, за исключением случаев, когда мне нужно сделать что-то простое с помощью x. Например, если я хочу проверить сеанс, мне обычно приходится писать что-то более подробное.
Хотел бы я сделать это:
Код: Выделить всё
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"] дважды; один раз для проверки и еще раз для задания. Есть идеи?