【问题标题】:What is Action<string>?什么是动作<字符串>?
【发布时间】:2010-05-14 12:34:04
【问题描述】:

Action&lt;string&gt;是什么,怎么用?

【问题讨论】:

    标签: c# generics delegates


    【解决方案1】:

    Action 是一个标准委托,它有 1 到 4 个参数(在 .NET 4 中为 16 个)并且不返回值。它用于表示一个动作。

    Action<String> print = (x) => Console.WriteLine(x);
    
    List<String> names = new List<String> { "pierre", "paul", "jacques" };
    names.ForEach(print);
    

    还有其他预定义的委托:

    • Predicate,具有一个参数并返回布尔值的委托。

      Predicate<int> predicate = ((number) => number > 2);
      var list = new List<int> { 1, 1, 2, 3 };
      var newList = list.FindAll(predicate);
      
    • Func 是更通用的一个,它有 1 到 4 个参数(.NET 4 中为 16 个)并返回一些东西

    【讨论】:

    • 我相信“1 到 16 个参数”仅适用于 .NET 4?
    【解决方案2】:

    这是一个带有签名的函数的委托 void Bla(string parameter)。您可以使用它来将函数传递给其他函数。 例如你可以这样做

    Action<string> action = (x => Console.WriteLine(x));
    new List<string>{"1","2","3"}.ForEach(action);
    

    将所有字符打印到控制台

    【讨论】:

      【解决方案3】:

      它是一个带一个参数的委托,这是一个字符串。

      很有用,因为这意味着您不必再为动作创建委托,只要您可以为它们使用标准动作(即参数数量是固定的,没有默认值,您可以只使用现有动作)。

      【讨论】:

        【解决方案4】:
        public void ValidateInput(string input)
        {
           //some code
        }
        
        public void test()
        {
           Action<string> action = ValidateInput;
        }
        

        【讨论】:

          【解决方案5】:

          它基本上只是一个不返回值的委托。

          看看这里: http://msdn.microsoft.com/en-us/library/018hxwa8.aspx

          Action&lt;string&gt; 只是一个方法的委托,该方法除了单个字符串参数并且不返回任何内容。

          【讨论】:

            【解决方案6】:
            猜你喜欢
            • 2015-08-15
            • 1970-01-01
            • 2022-01-21
            • 2014-01-16
            • 2019-11-04
            • 2023-03-26
            • 2016-09-23
            • 2020-09-25
            相关资源
            最近更新 更多