我有一个简单的过滤器类,如下所示:
public class DateFilter
{
public DateTime Value { get; set; }
public Func<FilterObject, bool> Match { get; set; }
}
是否可以使用本地值初始化构造函数或对象初始值设定项中的Match函数?
创建过滤器后分配的示例:
var df = new DateFilter();
df.Match = (input) => df.Value > input.Date;
是否可以将示例缩减为一个语句?
答案 0 :(得分:3)
不,您无法在初始值设定项中为该变量引用变量。您只能在定义后引用它。
答案 1 :(得分:0)
这是不可能的,但如果符合您的要求,我可以建议在func中再添加一个参数
public class DateFilter
{
public DateTime Value { get; set; }
public Func<FilterObject, DateTime, bool> Match { get; set; }
public DateFilter(Func<FilterObject, DateTime, bool> predicate)
{
Match = predicate;
}
}
var df = new DateFilter( (input, val) => val > input.Date));
假设您将DateFilter的值作为匹配的第二个参数