Enu*_*mto 2 c# lambda action func
我如何调用项目,以便TestAction写出"s.Hello"?现在我什么都不做,它跳过了"action = s .."这一行.
或者是另一种方法吗?由于我不想返回任何代码,我使用Action而不是Func
我刚开始使用Action.
public class Items
{
public string Hello { get; set; }
}
public class TestClass
{
public void TestAction(Action<Items> action)
{
action = s => Console.WriteLine(s.Hello);
}
public TestClass()
{
TestAction(b => b.Hello = "Hello world!");
}
}
Run Code Online (Sandbox Code Playgroud)
让我们从堆栈跟踪的底部深入研究您的代码.
TestAction(b => b.Hello = "Hello world!");您正在提供一个指定b.Hello为"Hello World" 的lambda .
action = s => Console.WriteLine(s.Hello);您正在为同一个委托分配一个新的lambda.
你实际上并没有对它们做任何事情 - 你只是在生成一个委托.要执行该委托,您需要一个类的参数Items.你真正想要的是用这样的论证来调用这个动作.
public class TestClass
{
public void TestAction(Action<Items> action)
{
Items i = new Item() { Hello = "Hello World");
action(i);
}
public TestClass()
{
TestAction(b => Console.WriteLine(b.Hello));
}
}
Run Code Online (Sandbox Code Playgroud)