gpt4 book ai didi

c# - Resharper 警告空字符串 (System.NullReferenceException)

转载 作者:太空狗 更新时间:2023-10-29 20:01:14 26 4
gpt4 key购买 nike

只是想确定我没有编码太久......但是,这似乎不太可能:

string System.NullReferenceException http://i.imgur.com/TBjpNTX.png

我创建了 var,检查是否为 null,如果是则返回,所以我无法在此时将其视为 null :)

Resharper 错误?

编辑:
根据 Igal Tabachnik 的回答,他是对的,我正在使用以下方法扩展:

public static bool IsNullOrEmpty(this string target)
{
return String.IsNullOrEmpty(target);
}

我发现它更容易阅读

if (some_string.IsNullOrEmpty())
// do something here

而不是:

if (string.IsNullOrEmpty(some_string))
// do something here

解决方案:
Igal Tabachnik 是对的。唯一缺少的 2 件是:

  1. Resharper -> 选项 -> 代码注释(在代码检查组下)-> 打开解决方案。
  2. 给 VS 几分钟时间来刷新所有内容。

最佳答案

您的代码表明您正在使用的 IsNullOrEmpty() 方法是您自己的自定义扩展方法。 “真正的”IsNullOrEmptystring 的静态方法。

简答:如果你把它改成

if (string.IsNullOrEmpty(input_string))
return "...";

ReSharper 将停止提示。

长答案:由于这是您自己的扩展方法,ReSharper 无法知道此方法的结果如何应用于您的代码。为此,ReSharper 使用代码注释来找出有关代码的其他信息。一个这样的注释称为 Contract Annotation ,这是 ReSharper 用来计算原始 string.IsNullOrEmpty() 方法结果的方法。您可以在博文中阅读更多相关信息。

底线,如果您想使用自己的扩展方法,但让 ReSharper 正确理解它,您必须在其上应用以下 Contract Annotation:

[ContractAnnotation("null=>true")]
public static bool IsNullOrEmpty(this string input)
{
...
}

关于c# - Resharper 警告空字符串 (System.NullReferenceException),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23404686/

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