我尽可能将Delegates作为参数。所以我通常会遇到一个委托的多个参数属于同一类型的情况,我试图使其更具可读性。为此,请尝试使用c#关键字“ using”指令。
using System;
using FirstNumber = System.Int32;
using SecondNumber = System.Int32;
using Result = System.Int32;
public class FunctionPointers
{
Func<FirstNumber, SecondNumber, Result> add;
public FunctionPointers(Func<FirstNumber, SecondNumber, Result> op)
{
add = op;
}
}
我不能说我完全理解您的方法背后的原因,但重要的是要考虑到您实质上声明的是:
FirstNumber = SecondNumber = Result = System.Int32;
由于所有这些标识现在都指向同一类型,System.Int32
。因此,Visual Studio选择使用第一作者分配的Allia来填充智能感知。
关于委托人的声明,请考虑您只是定义所需的签名,即“ IN和OUT”类型。最终“包装” /“封装”的方法将提供参数的标识。
为了获得可读性,如果确实要采用这种方式,请考虑使用所需的“可读”身份定义自己的委托类型:
public class FunctionPointers
{
Operator Add;
public FunctionPointers(Operator addOp)
{
Add = addOp;
}
}
public delegate Int32 Operator(Int32 FirstNumber, Int32 SecondNumber);
否则,为“正常”方式,并带有方法上的标识:
Func<Int32,Int32,Int32> add;
public FunctionPointers()
{
add = AddMethod;
}
public Int32 AddMethod(Int32 FirstNumber, Int32 SecondNumber)
{
return FirstNumber + SecondNumber;
}