没有参数的c#谓词

Dol*_*lev 4 c# anonymous-function func

我正在尝试将谓词传递给函数,但是它没有输入。我实际上正在尝试将计算延迟到发出呼叫为止。

有没有办法使用c#谓词类型呢?如果不是为什么。

我知道使用Func可以做到这一点

Func<bool> predicate = () => someConditionBool;
Run Code Online (Sandbox Code Playgroud)

但是我想这样做:

Predicate<> predicate = () => someConditionBool;
Run Code Online (Sandbox Code Playgroud)

Ser*_*kiy 5

如果这只是可读性问题,那么您可以创建自己的委托,该委托返回boolean并且没有任何参数:

public delegate bool Predicate();
Run Code Online (Sandbox Code Playgroud)

并以这种方式使用

Predicate predicate = () => someConditionBool;
Run Code Online (Sandbox Code Playgroud)

注意:请记住,每个人都熟悉.NET中使用的默认值ActionFunc委托,但它们Predicate是您的自定义委托,对于普通程序员而言,第一次使用它就不太清楚。