告诉resharper一个Func 永远不会返回null

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了告诉resharper一个Func 永远不会返回null相关的知识,希望对你有一定的参考价值。

[NotNull]
private readonly Func<string> FunctionThatWillNeverBeNullNorReturnNull;

void Test(){

    string thisStringIsNotNull = FunctionThatWillNeverBeNullNorReturnNull();
}

我怎么告诉resharper上面的函数永远不会返回null?设置[NotNull]意味着Function引用不能为null,但我不确定如何告诉resharper它返回的内容也不会为null。

答案

我所做的是创建一个可以注释的委托。

但是,ReSharper不会显示返回值的警告。它仅适用于委托参数。

[CanBeNull]
public delegate string ReturnMaybeNull();

[NotNull]
public delegate string ReturnNotNull([NotNull]string someParam);

[NotNull]
private readonly ReturnMaybeNull FunctionThatMayReturnNull = () => null;

[NotNull]
private readonly ReturnNotNull FunctionThatNeverReturnsNull = someParam => null; // no warning

void Test()
{
    bool test = FunctionThatMayReturnNull().Equals(""); // no warning
    string thisStringIsNotNull = FunctionThatNeverReturnsNull(null); // parameter warning here
    if (thisStringIsNotNull == null) // no warning
    {
        test = test ^ true;
    }
}

以上是关于告诉resharper一个Func 永远不会返回null的主要内容,如果未能解决你的问题,请参考以下文章

ReSharper代码注释异步任务

有没有办法告诉流星集合是静态的(永远不会改变)?

如何用每行一个参数告诉 ReSharper 自动格式化

告诉 Resharper 一个 lambda 参数不为空

如何告诉 Android Studio 方法不返回

为啥 ReSharper 告诉我“隐式捕获的闭包”?