c# - 在 Action 方法中调用的好方法

标签 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!");
    }
}

最佳答案

让我们从堆栈跟踪的底部深入了解您的代码。

  1. TestAction(b => b.Hello = "Hello world!");

您正在提供一个将 b.Hello 指定为“Hello World”的 lambda。

  1. action = s => Console.WriteLine(s.Hello);

您正在为同一个委托(delegate)分配一个新的 lambda。

您实际上并没有对它们做任何事情 - 您只是生成一个委托(delegate)。要执行该委托(delegate),您需要一个 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));
    }
}

关于c# - 在 Action 方法中调用的好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4642781/

相关文章:

c# - 如何在 Google Cardboard Unity3D 中找到头部的旋转?

c# - 在 Entity Framework Core 的不同方法中使用相同的事务

c# - System.Windows.Media.RenderCapability.Tier 返回的不是渲染模式

python - 如果满足 lambda 条件,则删除整个列表

c# - 在 MVC Mailer 中更改电子邮件显示名称的正确方法

python - 如何在使用 AWS Lambda 中的 POST 方法和正文执行 307 重定向时传递请求正文?

python - 重复函数应用

java - 如何使用 Java 在 selenium webdriver 中打开新选项卡或如何使用 selenium webdriver 使用操作类在 selenium 中按 ctrl + T

c# - 如何通过引用传递 System.Action?

java - Action 类被调用两次