如何使用C#中的“param”来运行这个例子呢?

我试图理解从RelayCommand示例中获取的这一行中param参数的含义和用法:

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 integers) { return "ok"; } } } 

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 integers) { return "ok"; } } } 

Func实际上可以是任何 Func (或Func等)因为你的lambda表达式不在任何地方使用param 。 或者它可以是Expression>等。

我建议你阅读lambda表达式以获取更多细节,例如在以下任何一个SO问题中:

  • 你能解释一下lambda表达式吗?
  • 什么是lambda
  • C#lambda表达式,我为什么要用它