C#委托基础系列原于2011年2月份发表在我的新浪博客中,现在将其般至本博客。
委托和其委托的方法必须具有相同的签名。签名相同:1.参数类型相同 2.参数数量相同 3.返回值一致
<wbr></wbr>
例一
class Program
{
public delegate int MathMethod(int x, int y);
public int Add(int a, int b)
{
return a + b;
}
static void Main(string[] args)
{
MathMethod mm;
Program p = new Program();
mm = p.Add;// 相当于一个方法的容器
Console.WriteLine("计算结果为{0}",mm(7,6));
Console.ReadLine();
}
}
例二
class Program
{
public delegate double MathMethod(double x, double y);
double Add(double a, double b)
{
return a + b;
}
double Subtract(double a, double b)
{
return a + b;
}
double Multiply(double a, double b)
{
return a * b;
}
double Divide(double a, double b)
{
return a / b;
}
void DoCalculate(MathMethod mm)
{
Console.WriteLine("请输入第一个数");
double x = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("请输入第二个数");
double y = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("结果{0}",mm(x, y));
Console.ReadLine();
}
static void Main(string[] args)
{
MathMethod mm;
Program p = new Program();
mm = p.Divide;
p.DoCalculate(mm);
}
}
本文参考自金旭亮老师的《.NET 4.0面向对象编程漫谈》有关代理的内容