2006-08-07

C# 2.0中泛型编程思想分析

来源: CSDN 作者:shadow 评论 0 条
 add方法将具有同样的签名,但这个类仍然能通过编译,是否会引起调用混淆将在这个类实例化和调用add方法时判定。请看下面调用代码:
Node<int, int> node = new Node<int, int>();
object x = node.add(2, 11);
  这个Node的实例化引起了三个add具有同样的签名,但却能调用成功,因为他优先匹配了第三个add。但假如删除了第三个add,上面的调用代码则无法编译通过,提示方法产生的混淆,因为运行时无法在第一个add和第二个add之间选择。
Node<string, int> node = new Node<string, int>();
object x = node.add(2, "11");
  这两行调用代码可正确编译,因为传入的stringint,使三个add具有不同的签名,当然能找到唯一匹配的add方法。
  由以上示例可知,C#的泛型是在实例的方法被调用时检查重载是否产生混淆,而不是在泛型类本身编译时检查。同时还得出一个重要原则:
  当一般方法与泛型方法具有相同的签名时,会覆盖泛型方法。
  泛型类的方法重写
  方法重写(override)的主要问题是方法签名的识别规则,在这一点上他与方法重载一样,请参考泛型类的方法重载。
共12页: 上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] 11 [12] 下一页
(本文仅表明作者个人观点,不代表本站及其管理员立场.) 推荐 收藏 投稿 打印 返回 关闭
上一篇:JSP/Servlet的重定向技术综述  
下一篇:C#结合串口通信类实现串口通信源代码
    评论加载中…
 推荐文章
     

网站首页  -  网站地图 -   站长论坛  -  网站投稿  -    -  网站管理
Copyright © 2008 芜湖站长站 All Rights Reserved 皖ICP备07500611号