C# 如何使用2个参数编写委托
这应该是一个简单的问题,希望有一个简单的答案。C# 如何使用2个参数编写委托,c#,delegates,syntax-error,C#,Delegates,Syntax Error,这应该是一个简单的问题,希望有一个简单的答案。 我试图编写一个接受2个参数的委托,但编译器不接受它 当我使用一个参数时,它会起作用,例如: var addCar = new Action<string>(number => { } ); var addCar=新操作(编号=> { } ); 但当我使用2个参数时,编译器抱怨他不知道参数“number” 我试过的代码是这样的 var addCar = new Action<string, decimal>(num
我试图编写一个接受2个参数的委托,但编译器不接受它 当我使用一个参数时,它会起作用,例如:
var addCar = new Action<string>(number =>
{ } );
var addCar=新操作(编号=>
{ } );
但当我使用2个参数时,编译器抱怨他不知道参数“number”
我试过的代码是这样的
var addCar = new Action<string, decimal>(number, test =>
{ } );
var addCar=新操作(编号,测试=>
{ } );
错误是“当前上下文中不存在名称“number”
我不知道创建带有2个参数的委托的确切语法,因此我希望有人能帮我解决这个问题。为了让编译器知道
,
是否属于委托的构造函数调用或方法签名,应该在委托签名周围加上括号:
var addCar = new Action<string, decimal>((number, test) => { } );
而不是
test => { }
为了让编译器知道
,
是否属于构造函数调用或委托的方法签名,应该在委托签名周围添加括号:
var addCar = new Action<string, decimal>((number, test) => { } );
而不是
test => { }
我的
Action
作业的三种变体
private void AddCarMethod(string number, decimal test)
{
// TODO
}
private void AddCarMethod(string number)
{
// TODO
}
public void Test()
{
// variant 1 (lambda)
var addCar1 = new Action<string, decimal>((number, test) => { /* TODO */ });
// variant 2 (method reference)
Action<string, decimal> addCar2 = (number, test) => AddCarMethod(number, test);
// variant 2.1 (method reference short form)
var addCar2short = new Action<string, decimal>(AddCarMethod);
// variant 3 (with missing parameter)
Action<string, decimal> addCar3 = (number, test) => AddCarMethod(number);
addCar3("X007", 5);
}
private void AddCarMethod(字符串编号,十进制测试)
{
//待办事项
}
私有void AddCarMethod(字符串编号)
{
//待办事项
}
公开无效测试()
{
//变型1(λ)
var addCar1=新操作((数字,测试)=>{/*TODO*/});
//变量2(方法参考)
动作addCar2=(数字,测试)=>AddCarMethod(数字,测试);
//变型2.1(方法参考简称)
var addCar2short=新操作(AddCarMethod);
//变量3(缺少参数)
动作addCar3=(数字,测试)=>AddCarMethod(数字);
addCar3(“X007”,5);
}
我的动作的三种变体
作业
private void AddCarMethod(string number, decimal test)
{
// TODO
}
private void AddCarMethod(string number)
{
// TODO
}
public void Test()
{
// variant 1 (lambda)
var addCar1 = new Action<string, decimal>((number, test) => { /* TODO */ });
// variant 2 (method reference)
Action<string, decimal> addCar2 = (number, test) => AddCarMethod(number, test);
// variant 2.1 (method reference short form)
var addCar2short = new Action<string, decimal>(AddCarMethod);
// variant 3 (with missing parameter)
Action<string, decimal> addCar3 = (number, test) => AddCarMethod(number);
addCar3("X007", 5);
}
private void AddCarMethod(字符串编号,十进制测试)
{
//待办事项
}
私有void AddCarMethod(字符串编号)
{
//待办事项
}
公开无效测试()
{
//变型1(λ)
var addCar1=新操作((数字,测试)=>{/*TODO*/});
//变量2(方法参考)
动作addCar2=(数字,测试)=>AddCarMethod(数字,测试);
//变型2.1(方法参考简称)
var addCar2short=新操作(AddCarMethod);
//变量3(缺少参数)
动作addCar3=(数字,测试)=>AddCarMethod(数字);
addCar3(“X007”,5);
}
在括号中列出参数:var addCar=新操作((数字,测试)=>{})代码>简单问题的简单答案,效果完美,感谢在括号中列出参数:var addCar=newaction((number,test)=>{})代码>简单问题的简单答案,效果完美,谢谢