我能够编译包含此代码的代码:
OperationDelegate myOpDelegate;
static OperatorDefinition[] definitions ={
new OperatorDefinition("+",2,3,true, new OperationDelegate(OperationAdd)),
};
delegate double OperationDelegate(double[] args);
static double OperationAdd(double[] args)
{
return args[0] + args[1];
}
但我认为如果我可以做更多这样的事情,我的代码会更清晰:
OperationDelegate myOpDelegate;
static OperatorDefinition[] definitions ={new OperatorDefinition("+",2,3,true, new OperationDelegate({return args[0]+args[1]}))};
delegate double OperationDelegate(double[] args);
因为我想在一个地方定义每个OperatorDefinition的所有内容,而不是单独定义这些函数。有没有办法在C#中做到这一点?
(任何其他批评我的代码也会受到欢迎)
答案 0 :(得分:8)
查看匿名方法......例如:C# - Anonymous delegate
答案 1 :(得分:6)
您可以使用.Net 3.5中的Lambda表达式:
static OperatorDefinition[] definitions ={
new OperatorDefinition("+",2,3,true,
args => args[0] + args[1])
};
在OperatorDefinition
构造函数中,最后一个参数应为Func<double[],double>