码迷,mamicode.com
首页 > Windows程序 > 详细

C#委托的协变性和逆变性

时间:2019-03-19 01:19:03      阅读:259      评论:0      收藏:0      [点我收藏+]

标签:返回   委托   button   memory   new   int   and   console   值类型   

逆变性

只要函数参数与委托兼容,就能创建委托实例。

 1 Button button = new Button();
 2 //public delegate void EventHandler(object sender, EventArgs e);
 3 button.Click += LogPlainEvent;
 4 //public delegate void KeyPressEventHandler(object sender, KeyPressEventArgs e);
 5 button.KeyPress += LogPlainEvent;
 6 //public delegate void MouseEventHandler(object sender, MouseEventArgs e);
 7 button.MouseClick += LogPlainEvent;
 8 
 9 public void LogPlainEvent(object sender, EventArgs e)
10 {
11 }

协变性

只要返回值类型与委托兼容,就能创建委托实例

 1 public delegate Stream StreamFactory();
 2 
 3 public MemoryStream GenerateData()
 4 {
 5     return new MemoryStream();
 6 }
 7 
 8 StreamFactory factory = GenerateData;
 9 using (Stream stream = factory())
10 {
11     int data;
12     while((data = stream.ReadByte()) != -1)
13     {
14         Console.WriteLine(data);
15     }
16 }  

 

C#委托的协变性和逆变性

标签:返回   委托   button   memory   new   int   and   console   值类型   

原文地址:https://www.cnblogs.com/love-me-love-my-code/p/10556095.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!