【转】编写高质量代码改善C#程序的157个建议——建议44:理解委托中的协变
2021-04-24 03:26
标签:ring 通过 res return 编写高质量代码 过程 isa 理解 manage 建议44:理解委托中的协变 委托中的泛型变量天然是部分支持协变的。为什么是“部分支持协变”?看下面示例: 上中的GetAManager返回的是一个Manager,但是在使用中,其实是将其赋值给一个泛型参数为Employee的委托变量。因为存在下面一种情况,所以编译不过: 要让上面的代码编译通过,同样需要为委托中的泛型参数指定out关键字: 除非考虑到该委托声明肯定不会用于可变性,否则,为委托中的泛型参数指定out关键字将会拓展委托的应用,建议在实际编码过程中永远这样使用。实际上,FCL4.0中的一些委托声明已经用out关键字来让委托支持协变了,如我们常常会使用到的: 转自:《编写高质量代码改善C#程序的157个建议》陆敏技 【转】编写高质量代码改善C#程序的157个建议——建议44:理解委托中的协变 标签:ring 通过 res return 编写高质量代码 过程 isa 理解 manage 原文地址:http://www.cnblogs.com/farmer-y/p/7988549.html class Program
{
public delegate T GetEmployeeHanlder
GetEmployeeHanlder
public delegate T GetEmployeeHanlderout T>(string name);
public delegate TResult Funcout TResult>();
public delegate TOutput Converterin TInput, out TOutput>(TInput input);
文章标题:【转】编写高质量代码改善C#程序的157个建议——建议44:理解委托中的协变
文章链接:http://soscw.com/index.php/essay/78760.html