Как по умолчанию пустые значения сессии для пустых строк в C # - PullRequest
6 голосов
/ 21 октября 2010

Я привык использовать VB.net для веб-программирования.

Часто у меня есть что-то вроде:

Dim s as string = Session("s")

Я получаю строковое значение для s из Интернетасессия.Если в веб-сеансе нет значения, я получаю пустую строку.

Тем не менее, AFAIK, в C # мне нужно что-то вроде кода ниже, чтобы сделать то же самое.

Есть ли более простой способ сделать это?

Ответы [ 3 ]

15 голосов
/ 21 октября 2010

Это быстрый способ сделать это:

s = (string)Session["s"] ?? "";

Это приведёт Session ["s"] к строке, и если она не равна нулю, вернет значение,Если это ноль, это возвратит пустую строку.Выражение «a ?? b», по сути, совпадает с выражением «a != null ? a:b» (хотя * ?? компилируется более эффективно)

Что еще нужно иметь в виду: вы никогда не должны использовать исключениядля нормальной логики приложения.

0 голосов
/ 21 октября 2010

Поскольку строка является ссылочным типом, она может иметь значение NULL, поэтому вы можете проверить наличие пустых или нулевых значений с помощью string.IsNullOrEmpty (s) :

string s = string.IsNullOrEmpty((string)strObject) ? string.Empty : strObject.ToString();

В противном случае (как * 1006)* Philippe Leybaert говорит) вы можете использовать ??оператор.

0 голосов
/ 21 октября 2010

Я почти согласен с Филиппом, но он работает только в том случае, если в сеансе присутствует «s», в противном случае возникнет KeyNotFoundException.Этот код проверяет его, но не решает проблему NULL Филиппа.

s= Session.ContainsKey("s")?Session["s"]:"";

Таким образом, чтобы охватить обе возможности, он становится более сложным:

s = Session.ContainsKey("s")?(Session["s"]??""):"";

Это на самом деле не делает егопроще, но производительность должна быть лучше, чем ловить исключение.

...