【发布时间】:2011-05-22 13:30:33
【问题描述】:
这是一段代码:
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' 指向 'user' 对象的第一次使用。
第一季度。为什么会产生这样的异常?据我所知,如果user==null 则将生成异常并且执行将永远不会到达使用点。
第二季度。如何删除该警告?请注意: 1.我不想用cmets压制这个警告(我会有很多类似的部分,不想把我的源代码转换成'注释垃圾'); 2. 我不想更改 ReSharper 设置以将此问题从警告更改为“提示”的“建议”。
谢谢。
欢迎提出任何想法!
附:我正在使用 resharper 5.1、MVSV 2008、C#
【问题讨论】:
标签: c# .net configuration resharper nullreferenceexception