如何编写带有 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);
}
这应该是一个简单的问题,希望有一个简单的答案。
我正在尝试编写一个带有 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);
}