7.1.8 委托中的协变和抗变
来源:互联网 发布:java replace的效率 编辑:程序博客网 时间:2024/05/22 00:04
<c#高级编程>
7.1.8 协变和抗变
委托调用的方法不需要与委托声明定义的类型相同。因此可能出现协变和抗变。
1. 返回类型协变
方法的返回类型可以派生于委托定义的类型。在下面的示例中,委托MyDelegate定义为返回DelegateReturn类型。赋予委托实例d1的方法返回DelegateReturn2类型,DelegateReturn2派生自DelegateReturn,因此满足了委托的需求。这称为返回类型协变。
public class DelegateReturn{}public class DelegateReturn2 : DelegateReturn{}public delegate DelegateReturn MyDelegate1();class Program{static void Main(){MyDelegate1 d1 = Method1;d1();}static DelegateReturn2 Method1(){DelegateReturn2 d2 = new DelegateReturn2();return d2;}}
2. 参数类型抗变
术语"参数类型抗变"表示,委托定义的参数可能不同于委托调用的方法。这里是返回类型不同,因为方法使用的参数类型可能派生自委托定义的类型。在下面的示例代码中,委托使用的参数类型是DelegateParam2,而赋予委托实例d2的方法使用的参数类型是DelegateParam,
DelegateParam是DelegateParam2的基类。
public class DelegateParam{}public class DelegateParam2 : DelegateParam{}
public delegate void MyDelegate2(DelegateParam2 p);
class Program{static void Main(){MyDelegate2 d2 = Method2;DelegateParam2 p = new DelegateParam2();d2(p);}
static void Method2(DelegateParam p){}}
- 7.1.8 委托中的协变和抗变
- 委托中的协变和逆变
- C#委托中的协变和逆变
- 委托中的协变与逆变
- c# 委托 协变和逆变
- 协变和抗变
- 协变和抗变
- 委托中的协变和逆变(C# 编程指南)
- 委托中的协变和逆变(C# 编程指南)
- Delegate(委托)中的Covariance(协变)和Contravariance(逆变)
- C#委托中的协变与逆变
- scala中的协变和逆变
- C# 中的协变和逆变
- 委托类型协变和逆变的实际意义
- C# 委托之协变和逆变
- 建议44:理解委托中的协变
- C#中的协变与抗变
- C#中的协变与抗变(逆变)
- 安装Fedora 15后需做的25件事情
- MYSQL 常用函数
- 又恢复了CSDN博客专家的身份
- 活动目录 Active Directory
- (转)出现这样的警告 warning C4996: strcpy was declared deprecated
- 7.1.8 委托中的协变和抗变
- C#中静态与非静态方法比较
- Oracle基础
- image设置图片
- SQL数据库中 内连接 外连接和自连接(备忘)
- WIFI免费无线上网技巧揭秘
- GetMessage和PeekMessage的区别及PostMessage(hWnd, WM_QUIT, 0, 0)消息
- 提供:在线客服系统.企业IM.视频会议.企业通用OA办公系统
- JavaScript中的正则表达式简介