ReSharper, кажется, разрешает подобные ситуации очень простым (слишком простым) способом:
public ActionResult Payment()
{
IOrder order = PaymentBase.GetOrderFromRequest(this.Request.Params); //this method can return null sometimes
int payForm = order.PayForm;
if (order != null)
PaymentService.Check(order, "push", payForm);
else
LogsService.SaveDataLog(WebShopLogType.PaymentInfo, "order missing on push", (object)this.Request.Params.ToString(), "p");
return new EmptyResult();
}
Моя пустая проверка order != null
помечена сообщением «Выражение всегда истинно», и из-за этого все мое утверждение else
считается ненужным.
Я обнаружил, что это предположение сделано на основе order.PayForm
. ReSharper предполагает, что вызов свойства PayForm
объекта order
означает, что он точно не равен нулю. Удаление этой строки исключает сообщение «Выражение всегда истинно» .
Очевидно, что в строке int payForm = order.PayForm;
должно быть вместо сообщения «Возможно нулевое» .
Это ошибка или я что-то упустил?