面向对象---委托---
时间:2011-03-26 来源:hfliyi
委托主要用于.NET FRAMEWORK中的事件。
委托性质: (1):类似C/C++中的指针;(2):是C#中的一种引用数据类型;(3):是定义了方法返回类型和参数组成的数据类型。所以说委托和类的级别一样的。
委托的作用:委托包含对方法的引用,是一种安全的封装方法的类型。通过调用委托可以间接的调用方法。从而实现对方法的封装。符合委托返回类型和参数组成的任何方法都可以赋予委托。
一旦为委托分配了方法,委托将与方法具有共同的行为。
public delegate void DelegateMethod(int a , int b);//定义委托 返回值为空,拥有两个整形的参数
class Test
{
static void Main(string[] args)
{
DelegateMethod m =new DelegateMethod(Method1);//实例化委托
m(2,3);//调用委托
}
static void Method1(int a , int b)
{
Console.WriteLine("{0} + {1} = {2}",a , b , a+b);
}
}
//多播委托
注:委托的返回值是空,只有这样才能够体现多播委托的作用
namespace Test
{
public delegate void DelegateMethod(int a ,int b);
class Program
{
static void Main(string[] args)
{
DelegateMethod m = new DelegateMethod(Method1);
m += new DelegateMethod(Method2);
m += new DelegateMethod(Method1);
m(2, 3);
}
static void Method1(int a, int b)
{
Console.WriteLine("{0}+{1}={2}",a, b,a+b);
}
static void Method2(int a, int b)
{
Console.WriteLine("{0} * {1} = {2}", a, b, a * b);
}
static void Method3()
{
Console.WriteLine("Hello");
}
static void Method4()
{
Console.WriteLine("World");
}
}
}
如果是多播委托的情况下,委托有返回值,那么它的结果是最后被指定的方法的结果。
namespace Test
{
public delegate int DelegateMethod(int a, int b);
class Program
{
static void Main(string[] args)
{
DelegateMethod m = new DelegateMethod(Method1);
m += new DelegateMethod(Method2);
m += new DelegateMethod(Method1);
Console.WriteLine(m(2, 3));
}
static int Method1(int a, int b)
{
return a + b;
}
static int Method2(int a, int b)
{
return a * b;
}
}
}