2010-03-04 5 views
3

Resharper показывает предупреждение «Возможное предупреждение System.NullReferenceException». Я, однако, не вижу, как я могу его получить.Возможное исключение Nullreference

public class PlaceController : PlanningControllerBase 
{ 
    [Authorize] 
    public ActionResult StartStop(int id) 
    { 
     if (Request != null && Request.Cookies != null && Request.Cookies["place"] != null) 
     { 
      if (Request.Cookies["place"].Value != null)//Possible NullReferenceException? 
      { 
       string placeInformation = Request.Cookies["place"].Value;//Possible NullReferenceException? 
       //... 
      } 
     } 
    } 
} 

Как это может дать NullReference, если я проверяю все поля? При использовании нижеуказанного предупреждения не отображается:

Request.Cookies[0];//Index instead of name 

Редактировать: обновленный код.

+0

Есть ли причина, по которой вы хотите установить переменную 'placeInformation', когда' Request.Cookies ["place"]. Значение 'null или это ошибка? –

ответ

5

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

if (Request != null && Request.Cookies != null) 
{ 
    var place = Request.Cookies["place"]; 
    if (place != null && place.Value == null) 
    { 
     string placeInformation = place.Value; 
    } 
} 

Это может сработать.

+1

Привет, это решило проблему! И это более читаемо ... – Carra

0

ошибка не хочу Request.Cookies["place"].Value != null , прямо сейчас вы будете устанавливать только местоИнформация к null.

+0

Да, моя ошибка. – Carra

3

Вам не нужно выслушивать каждое предупреждение. Объект Request и объект Cookies никогда не будут нулевыми, так что это все, что вам нужно.

var placeCookie = Request.Cookies["place"]; 
if (placeCookie != null) 
{ 
    string placeInformation = placeCookie.Value; 
} 
+0

Действительно, просто написание «HttpCookie cookie = Request.Cookies [" place "]; работает и не показывает никаких предупреждений. – Carra

+0

@Carra - Просто боковое примечание, я думаю, что использование действительно в твоей повседневной лексике действительно потрясающе. – ChaosPandion

+0

Английский не мой родной язык. Я хотел использовать «Да, ...». – Carra

 Смежные вопросы

  • Нет связанных вопросов^_^