注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

还东国的博客

行之苟有恒,久久自芬芳

 
 
 

日志

 
 

C#小知识之十二模板函数的重载机制的补充  

2014-10-24 13:14:33|  分类: NET(C#) |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

C#小知识之十二模板函数的重载机制的补充

C#小知识系列的七中对模板函数的重载有了一个较深的认识,但是在后来与在C++的模板中又有了新的认识,和C#的对比一下,比如C#里面有没有类似于偏特化的东西,有没默认值。先看一下代码:

    public class GT

    {

        public T Add<T, U>(T t, U u)

        {

            return t;

        }

        public T Add<T,U>(T tt,U t, T u)

        {

            return u;

        }

//下面标红的也是不对的

//类似C++偏特化不支持

        public T Add<T,int>(T tt,int t, T u)

        {

            return u;

        }

                   //不支持默认值

        public T Add<T,U=int>(T  t, U u)

        {

            return u;

        }

 

        public int Add(int a, int b)

        {

            return a + b;

        }

    }

调用方式如下:

            GT gt = new GT();

            gt.Add(2,3,6);

            gt.Add<int,int>(1,2);//类似于C++gt.Add<>(1,2);是不正确的。

 

从上面看来,C#更严谨一些,说古板一些也好,但是这样有一个好处,既拿到了泛型编程的好处,又做了严格的限制,提高了程序的编译控制水平。

是进步还是进步,这是一个问题啊。

  评论这张
 
阅读(399)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017