Как по умолчанию значения нулевого сеанса для пустых строк в C#
Я привык использовать VB.net для веб-программирования.
часто, у меня что-то вроде:
Dim s as string = Session("s")
Я получаю строковое значение s
из веб-сессии. Если в веб-сеансе нет значения, я получаю пустую строку.
однако, AFAIK, в C#, я должен иметь что-то вроде кода ниже, чтобы сделать то же самое.
string s;
try { s = Session["s"].ToString(); }
catch { s = ""; }
есть ли более простой способ сделать это?
3 ответов
Это быстрый способ сделать это:
s = (string)Session["s"] ?? "";
это литой сессия["s"] в строку, и если это не null, верните значение. Если он равен null, он вернет пустую строку. В "a ?? b
"выражение по существу то же самое, что и"a != null ? a:b
" (?? компилируется более эффективно, хотя)
что-то еще, чтобы иметь в виду: вы не должны использовать исключения для нормального логики приложения.
поскольку string является ссылочным типом, то nullable, поэтому вы можете проверить пусто или null с помощью строку.IsNullOrEmpty (s):
string s = string.IsNullOrEmpty((string)strObject) ? string.Empty : strObject.ToString();
в противном случае (а Филипп Leybaert говорит) можно использовать ?? оператор.
Я почти согласен с Филиппом, но он работает только в том случае, если "s" присутствует в сеансе, иначе будет исключение KeyNotFoundException. Этот код проверяет его, но не решает проблему NULL Филиппа.
s= Session.ContainsKey("s")?Session["s"]:"";
таким образом, чтобы охватить обе возможности, он становится MRE сложным:
s = Session.ContainsKey("s")?(Session["s"]??""):"";
это на самом деле не облегчает, но производительность должна быть лучше, чем поймать исключение.