本帖最后由 周琪 于 2013-5-18 13:12 编辑
我总结了一下:委托和事件一共有以下几点区别:
1。事件只能在声明他的那个类或结构中被调用
2.事件包含add,remove,和一个私有委托。故一般只看见-=和+=用法
第一个比较简单,你可以看下
class Program
{
static void Main(string[] args)
{
ClassA ca = new ClassA();
MyDel md = new MyDel(ClassA.Print);
md += ca.PrintStr;
md(); //多播委托
StaticPrint(ca.PrintStr);
StaticPrint(ClassA.Print);
Console.ReadKey();
}
static void StaticPrint(MyDel m)//委托做参数存方法
{
m();
}
}
public delegate void MyDel();
public class ClassA
{
public static void Print()
{
Console.WriteLine("这是静态方法。。。。");
}
public void PrintStr()
{
Console.WriteLine("这是实例方法");
}
}
==================================================第二个=================================
class MyEventArg
{
public string Name { set; get; }
public string Tele { set; get; }
}
class Program
{
static void Main(string[] args)
{
ClassA a = new ClassA();
a.MyEvent += a.Print;
MyEventArg news = new MyEventArg() { Name = "zhouqi", Tele = "123456789" };
a.ConSoleNews(a, news);
Console.ReadKey();
}
}
delegate void MyEventHandler(object sender, MyEventArg e);
class ClassA
{
public event MyEventHandler MyEvent; //定义一个事件
public void ConSoleNews(object sender, MyEventArg e)
{
MyEvent(sender, e); //只能在声明事件的类或结构中调用事件
}
public void Print(object obj, MyEventArg msg)
{
Console.WriteLine(msg.Name + " " + msg.Tele);
}
}
|