Вот кусок кода:
IUser user = managerUser.GetUserById(UserId);
if ( user==null )
throw new Exception(...);
Quote quote = new Quote(user.FullName, user.Email);
Здесь все хорошо. Но если я заменю строку "if" на следующую:
ComponentException<MyUserManagerException>.FailIfTrue(user == null, "Can't find user with Id=" + UserId);
где реализация функции следующая:
public abstract class ComponentException<T> : ComponentException
where T : ComponentException, new()
{
public static void FailIfTrue(bool expression, string message)
{
if (expression)
{
T t = new T();
t.SetErrorMessage(message);
throw t;
}
}
//...
}
Затем ReSharper генерирует мне предупреждение: возможно "System.NullReferenceException", указывающее на 1-е использование объекта "user".
Q1. Почему это порождает такое исключение? Насколько я вижу, если user==null
то будет сгенерировано исключение, и выполнение никогда не достигнет точки использования.
Q2. Как убрать это предупреждение? Пожалуйста, обратите внимание: 1. Я не хочу подавлять это предупреждение комментариями (у меня будет много подобных частей и я не хочу превращать мой исходный код в 'закомментированный мусор); 2. Я не хочу изменять настройки ReSharper, чтобы изменить эту проблему с предупреждения на "предложение" в "подсказке".
Благодарю.
Любые мысли приветствуются!
PS Я использую Resharper 5.1, MVSV 2008, С#