我试图理解从RelayCommand示例中获取的这一行中param参数的含义和用法:
return new RelayCommand(param => MessageBox.Show("It worked."));
Run Code Online (Sandbox Code Playgroud)
首先,我理解"param"参数与"params"关键字无关,这是正确的吗?
public int Add(params int[] list)
{
int sum = 0;
foreach (int i in list)
sum += i;
return sum;
}
Run Code Online (Sandbox Code Playgroud)
其次,我需要添加什么样的委托代码才能使以下示例正常工作?
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";
}
}
}
Run Code Online (Sandbox Code Playgroud)
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";
}
}
}
Run Code Online (Sandbox Code Playgroud)
在Func<int,int>实际上可能是任何 Func<T,int>(或Func<T,long>),因为你的lambda表达式不使用param任何地方.或者也可以是Expression<Func<int,int>>等等.
我建议你阅读lambda表达式以获取更多细节,例如在以下任何一个SO问题中:
| 归档时间: |
|
| 查看次数: |
578 次 |
| 最近记录: |