检查 Func<T> 不为空而不调用它

Tom*_*len 2 c# parameters null function

给定班级:

public class Options<T>
{
    protected internal Func<T> GetFromDB { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我如何在GetFromDB不调用方法的情况下检查方法本身不为空?如果我做:

if (options.GetFromDB() != null)
{
    var r = options.GetFromDB();
    ... do something
}
Run Code Online (Sandbox Code Playgroud)

它似乎在传递的方法中调用代码两次,一次用于空检查,一次用于带返回的实际调用。

Jim*_*ica 6

这行不通吗?

if (options.GetFromDB != null)
Run Code Online (Sandbox Code Playgroud)

  • 我省略了 (),所以它是访问属性而不是调用函数 (3认同)