代码之家  ›  专栏  ›  技术社区  ›  Edward Tanguay

我如何使用C中的“param”来得到这个示例?

  •  1
  • Edward Tanguay  · 技术社区  · 16 年前

    我试图理解 帕拉姆 此行中的参数取自relaycommand示例:

    return new RelayCommand(param => MessageBox.Show("It worked."));
    

    首先,我了解“param”参数 与“params”关键字无关 ,这是正确的吗?

    public int Add(params int[] list)
    {
      int sum = 0;
      foreach (int i in list)
        sum += i;
      return sum;
    }
    

    第二, 我必须添加哪种委托代码 要让下面的示例工作吗?

    using System;
    using System.Collections.Generic;
    
    namespace TestParam222
    {
        class Program
        {
            static void Main(string[] args)
            {
                Console.WriteLine("The total is {0}.", Tools.GetTest(param => 23));
                Console.ReadLine();
            }
        }
    
        class Tools
        {
            public static string GetTest(List<int> integers)
            {
                return "ok";
            }
        }
    }
    
    1 回复  |  直到 16 年前
        1
  •  6
  •   Community CDub    8 年前

    param 不是关键字。它是示例中lambda表达式的参数。您需要使您的方法采用委托或表达式树,例如

    using System;
    using System.Collections.Generic;
    
    namespace TestParam222
    {
      class Program
      {
        static void Main(string[] args)
        {
          Console.WriteLine("The total is {0}.", Tools.GetTest(param => 23));
          Console.ReadLine();
        }
      }
    
      class Tools
      {
        public static string GetTest(Func<int, int> integers)
        {
          return "ok";
        }
      }
    }
    

    这个 Func<int,int> 实际上可能是 任何 Func<T,int> (或) Func<T,long> 因为lambda表达式不使用 帕拉姆 任何地方。或者它可以是 Expression<Func<int,int>> 等。

    我建议您阅读有关lambda表达式的更多详细信息,例如,在这些so问题中: