源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

浅谈C#2.0泛型中的变化:default关键字

  • 时间:2021-12-31 06:02 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:浅谈C#2.0泛型中的变化:default关键字
今天回答别人问题的时候,才发现原先的T.default语法被取消了,使用了新的default关键字来实现这一功能。还好回复前动手试了一下,不然就... 下面详细说明一下。之所以会用到default关键字,是因为需要在不知道类型参数为值类型还是引用类型的情况下,为对象实例赋初值。考虑以下代码:
[u]复制代码[/u] 代码如下:
class TestDefault<T>     {         public T foo()         {             T t = null; //???             return t;         }     }
如果我们用int型来绑定泛型参数,那么T就是int型,那么注释的那一行就变成了 int t = null;显然这是无意义的。为了解决这一问题,引入了default关键字:
[u]复制代码[/u] 代码如下:
class TestDefault<T>     {         public T foo()         {                 return default(T);         }     }
以下是测试用的代码,看了之后就应该很快能明白,default关键字的作用:
[u]复制代码[/u] 代码如下:
 class Program     {         static void Main(string[] args)         {             TestDefault<int> t1 = new TestDefault<int>();             int i = t1.foo();             System.Diagnostics.Debug.Assert(i == 0);             TestDefault<object> t2 = new TestDefault<object>();             object o = t2.foo();             System.Diagnostics.Debug.Assert(o == null);         }     }
最后说明一下,在.net 2.0的早期preview中,没有default关键字,使用如下的方式实现default关键字的功能:
[u]复制代码[/u] 代码如下:
class TestDefault<T>     {         public T foo()         {                 return T.default;         }     }
这段代码在vs 2005 beta1中,已经不能通过编译了。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部