gpt4 book ai didi

c# - ReSharper:如何删除 "Possible ' System.NullReferenceException'”警告

转载 作者:可可西里 更新时间:2023-11-01 08:35:20 25 4
gpt4 key购买 nike

这是一段代码:

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 向我生成一条警告:Possible 'System.NullReferenceException' pointing on the 1st usage of 'user' object。

Q1。为什么会产生这样的异常?据我所知,如果 user==null 会产生异常并且执行永远不会到达使用点。

Q2。如何删除该警告?请注意: 1.我不想用评论来压制这个警告(我会有很多类似的片段,不想在“评论垃圾”中转换我的源代码); 2. 我不想更改 ReSharper 设置以将此问题从警告更改为“提示”的“建议”。

谢谢。

欢迎任何想法!

附言我正在使用 resharper 5.1、MVSV 2008、C#

最佳答案

Resharper 只看当前方法对其进行分析,不会递归分析你调用的其他方法。

但是,您可以稍微指导 Resharper 并为其提供有关某些方法的元信息。例如,它知道“Assert.IsNotNull(a)”,并将在分析时考虑该信息。可以为 Resharper 制作一个外部注释文件,并为其提供有关某个库的额外信息,以使其更好地进行分析。也许这可能会提供一种解决您的问题的方法。

可以找到更多信息here .

可以找到一个显示它如何用于 Microsoft.Contracts 库的示例 here .

关于c# - ReSharper:如何删除 "Possible ' System.NullReferenceException'”警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4393456/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com