Каков правильный способ проверки нулевых значений?C#

Место общения программистов C#
Anonymous
Каков правильный способ проверки нулевых значений?

Сообщение Anonymous »

Мне нравится оператор объединения значений NULL, потому что он позволяет легко присваивать значение по умолчанию для типов, допускающих значение NULL.

Код: Выделить всё

 int y = x ?? -1;
Это здорово, за исключением случаев, когда мне нужно сделать что-то простое с помощью 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"] дважды; один раз для проверки и еще раз для задания. Есть идеи?

Вернуться в «C#»