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)=>{})简单问题的简单答案,效果完美,谢谢