[英]C# solving pseudocode to help understanding delegates&lambda
我在理解lambda,代表等方面遇到困难,我希望有人能给我解决我的问题的方法,使我能够更好地理解这些问题。 基本上,可以在初始化类的对象时创建(或更改)方法的主体 ,不是吗? 有点像这样:
假设我有1个类别:Class A,如下所示:
public class ClassA{
int i;
public ClassA(int number)
{
i = number;
}
public void Foo(){}
}
为了达到极简的演示目的,现在我在其他地方也有静态主体,我想要做的是:创建ClassA的多个对象并将其制成,以便在我调用ClassA.Foo时得到不同的结果,我可以确定自己的位置,在语法上看起来应该如何?
static void Main(string[] args)
{
ClassA FooBlue = New ClassA(1){
public void Foo()
{
System.Console.WriteLine("I am a Fooranger Blue!");
};
ClassA FooPink = New ClassA(2){
public void Foo()
{
System.Console.WriteLine("My color is the manliest!");
};
...
所以现在当我这样做时:
...
FooBlue.Foo();
FooPink.Foo();
System.Console.ReadLine();
}
我在控制台上得到以下输出:
"I am a Fooranger Blue!"
"My color is the manliest!"
我只是再次提到这是一个例子,绝不超出实践范围,但出于我的理解,如果有人能够提供给出所需解决方案的答案(包括无用的整数i),那就太好了。
为了实现“在构造类型时提供方法的实现”的目标,您确实可以使用委托。 在构造对象时只需接受一个委托,并在希望执行它时调用它:
public class ClassA
{
private Action action;
public ClassA(Action action)
{
this.action = action;
}
public void Foo()
{
action();
}
}
lambda的语法与根据类的定义创建命名方法的语法不同:
var fooBlue = new ClassA(() => Console.WriteLine("I am a Fooranger Blue!"));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.