我除了这似乎是一个显而易见的问题,但委托返回类型是否必须匹配它委托的方法的返回类型?
EG,像这样:
public static void Save()
{
TS ts = new TS(SaveToDatabase);
}
public delegate void TS();
private static void SaveToDatabase()
{ }
Run Code Online (Sandbox Code Playgroud)
这将永远不会奏效
public static void Save()
{
TS ts = new TS(SaveToDatabase);
}
public delegate string TS();
private static void SaveToDatabase()
{ }
Run Code Online (Sandbox Code Playgroud)
是的,它必须返回相同的类型并具有相同的参数.换句话说,函数和委托声明必须具有相同的签名.
例:
//Declare delegate (return double with double param)
public delegate double Squared(double x);
public class Circle
{
private double _radius;
public static double ValueTimesValue(double Value)
{
return Value * Value;
}
public double Area(Squared sqd)
{
return sqd(_radius) * Math.PI;
}
public void CircleCharacteristics()
{
Squared Sq = new Squared(ValueTimesValue);
}
}
Run Code Online (Sandbox Code Playgroud)
编辑: If you see the sample code, Squared Delegate and ValueTimesValue function have the same return type and parameters.