【发布时间】:2016-11-08 18:12:45
【问题描述】:
给定班级:
public class Options<T>
{
protected internal Func<T> GetFromDB { get; set; }
}
如何在不调用该方法的情况下检查GetFromDB 方法本身是否为空?如果我这样做:
if (options.GetFromDB() != null)
{
var r = options.GetFromDB();
... do something
}
似乎在传递的方法中调用了两次代码,一次用于空检查,一次用于实际调用并返回。
【问题讨论】:
-
你可以缓存结果,但我不知道你怎么知道函数的返回而不调用函数。您也可以将返回值分配给一个变量并检查该变量是否为非空。
-
如果要检查函数的result是否为null或检查是否没有提供函数,你应该说清楚
-
options.GetFromDB() != null正在测试执行方法的返回值是否为null,而不是func本身 -
@MarkPeters 是的,你是对的,已编辑问题
-
这个怎么样?
if ((r = options.GetFromDB()) != null)
标签: c# function parameters null