IDE0029 Нулевая проверка может быть упрощена C # 6.0 ASP.NET

В моей Visual Studio 2017 в окнах списка ошибок есть сообщение, подобное этому.

IDE0029 Нулевая проверка может быть упрощена

Я гуглил и нашел эту ссылку Нулевые операторы? и? [] но я не понимаю.

Мой код прост, как это:

string varIP = Request.UserHostAddress != null ? Request.UserHostAddress : "IP null";

Как это снова упростить?

Всего 4 ответа


string varIP = Request.UserHostAddress != null ? Request.UserHostAddress : "IP null";

Может быть переписан с помощью оператора нуль-слияния :

string varIP = Request.UserHostAddress ?? "IP null";

При этом будет использоваться значение UserHostAddress , если оно не равно нулю, и в этом случае вместо него используется значение справа («IP-ноль»).

Если есть вероятность того, что Request будет нулевым, вы можете дополнительно использовать условно-нулевой оператор, который вы упомянули в вопросе:

string varIP = Request?.UserHostAddress ?? "IP null";

В этом случае, если Request равен нулю, тогда левая часть будет оцениваться как нулевая, без необходимости проверять UserHostAddress (который в противном случае NullReferenceException ), и значение справа от оператора нуль-объединения будет снова использовано.


Вы можете использовать условно-нулевой оператор вместе с объединяющим нулем оператором ( ?? ), чтобы упростить ваш код:

string varIP = Request?.UserHostAddress ?? "IP null";

это значит
если Request?.UserHostAddress не равен NULL, тогда он назначит значение varIP для varIP ,
иначе "IP null" varIP "IP null" назначается для varIP


Visual Studio автоматически изменит это для вас.

Во-первых, перейдите к строке обидчика (чтобы сделать это, дважды щелкните сообщение в списке ошибок). Вы увидите, что под Request есть 3 точки - это означает, что рефакторинг доступен:

Рефакторинг доступен

Там также желтая лампочка на полях. Нажмите на лампочку:

Предлагаемый рефакторинг

Вы можете увидеть изменения, которые предлагает Visual Studio. Нажмите «Использовать объединенное выражение», чтобы внести изменения:

Refactored

Вы также можете использовать сочетание клавиш ctrl+. сделать то же самое с меньшим количеством нажатий. Когда курсор находится где-то (где угодно), нажмите ctrl+. , и появляется то же самое меню, как если бы вы щелкнули лампочку. Нажмите Enter чтобы принять изменение.

Это означает, что вы можете быстро исправить свой код:

  1. Дважды щелкните сообщение в списке ошибок
  2. Ctrl+. затем Enter

Рефакторинг доступен во многих местах, как указано лампочкой. Иногда вам нужно поместить курсор в определенном месте, что затрудняет поиск того, что предлагается. Например, существуют рефакторинги для автоматической реализации конструкторов или создания полей / свойств, автоматического назначения параметров свойствам и добавления нулевых проверок, превращения цикла foreach в цикл for и linq, и наоборот, и многие другие.


string varIP = Request.UserHostAddress ?? "IP null";

если Request.UserHostAddress не Request.UserHostAddress NULL, то значение присваивается или после части ?? получает назначение varIP .


Есть идеи?

10000