如何编写带有 2 个参数的委托

how to write delegate with 2 parameters

这应该是一个简单的问题,希望有一个简单的答案。
我正在尝试编写一个带有 2 个参数的委托,但编译器不接受它。

当我使用一个参数时它起作用了,例如:

var addCar = new Action<string>(number => 
{ } );

但是当我使用 2 个参数时,编译器抱怨他不知道参数 'number' 我试过的代码是这个

var addCar = new Action<string, decimal>(number, test => 
{ } );

错误是"The name 'number' does not exists in the current context"

我不知道创建带有 2 个参数的委托的确切语法,所以我希望有人能帮助我。

为了让编译器知道 , 属于构造函数调用还是属于委托的方法签名,您应该在委托签名周围添加括号:

var addCar = new Action<string, decimal>((number, test) => { } );

现在它将委托读取为

(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);
}