2016-11-08 76 views
-1

鉴于类:检查Func键<T>不为空,而不调用它

public class Options<T> 
{ 
    protected internal Func<T> GetFromDB { get; set; } 
} 

我将如何检查GetFromDB方法本身不为空,而不调用该方法?如果我这样做:

if (options.GetFromDB() != null) 
{ 
    var r = options.GetFromDB(); 
    ... do something 
} 

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

+1

您可以缓存结果,但我不知道如何在不调用函数的情况下知道函数的返回值。您也可以将返回值分配给一个变量,并检查该变量是否为非空值。 –

+0

如果要检查函数的* result *是否为null或检查是否没有提供函数 –

+0

'options.GetFromDB()!= null'正在测试执行方法是null,而不是'func'本身 – Jonesopolis

回答

4

这不行吗?

if (options.GetFromDB != null) 
+0

正如我在问题中提到的那样,它会执行这个方法。 –

+0

你的例子有'GetFromDB()',而不是'GetFromDB' – John

+0

它不会执行方法没有parens() –

相关问题