C# lambda表达式的对象初始化器/构造函数自引用

C# lambda表达式的对象初始化器/构造函数自引用,c#,lambda,object-initializers,C#,Lambda,Object Initializers,我有一个简单的过滤器类,如下所示: public class DateFilter { public DateTime Value { get; set; } public Func<FilterObject, bool> Match { get; set; } } 是否可以将示例简化为一条语句?否,您不能在初始值设定项中为该变量引用变量。您只能在定义后引用它。这是不可能的,但我可以建议在func中添加一个参数,如果它符合您的要求 public class Dat

我有一个简单的过滤器类,如下所示:

public class DateFilter
{
    public DateTime Value { get; set; }

    public Func<FilterObject, bool> Match { get; set; }
}

是否可以将示例简化为一条语句?

否,您不能在初始值设定项中为该变量引用变量。您只能在定义后引用它。

这是不可能的,但我可以建议在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的值作为匹配的第二个参数传递

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));