最近我做了一份来自一家公司的评估,其中有一个案例,他们想将谓词设置为方法的输入参数。由于我对此几乎没有经验,所以我一直在自己进行研究。代码看起来像这样:
我的问题是Egg函数期望什么,为什么?
我已经看过this answer和this answer和this answer,但还是没有意义。现在这个问题已经变成了学术性的,但我真的想要理解。
using System;
public interface IBird
{
Egg Lay();
}
public class Chicken : IBird
{
public Chicken()
{
}
public void EggLay()
{
}
public Egg Lay()
{
return new Egg();
}
}
public class Egg
{
public Egg(Func<IBird> createBird)
{
throw new NotImplementedException("Waiting to be implemented.");
}
public IBird Hatch()
{
throw new NotImplementedException("Waiting to be implemented.");
}
}
public class Program
{
public static void Main(string[] args)
{
// var chicken1 = new Chicken();
// var egg = chicken1.Lay();
// var childChicken = egg.Hatch();
}
}
我的问题是Egg函数期望什么,为什么?
我已经看过this answer和this answer和this answer,但还是没有意义。现在这个问题已经变成了学术性的,但我真的想要理解。
Func<IBird>
不是一个谓词。谓词应该类似于Func<IBird, bool>
或者Predicate<IBird>
这样的形式。 - Jon Skeet