当前位置: 编程技术>.net/c#/asp.net
浅谈C#2.0泛型中的变化:default关键字
来源: 互联网 发布时间:2014-10-23
本文导语: 今天回答别人问题的时候,才发现原先的T.default语法被取消了,使用了新的default关键字来实现这一功能。还好回复前动手试了一下,不然就... 下面详细说明一下。之所以会用到default关键字,是因为需要在不知道类型参数为值...
今天回答别人问题的时候,才发现原先的T.default语法被取消了,使用了新的default关键字来实现这一功能。还好回复前动手试了一下,不然就...
下面详细说明一下。之所以会用到default关键字,是因为需要在不知道类型参数为值类型还是引用类型的情况下,为对象实例赋初值。考虑以下代码:
代码如下:
class TestDefault
{
public T foo()
{
T t = null; //???
return t;
}
}
如果我们用int型来绑定泛型参数,那么T就是int型,那么注释的那一行就变成了 int t = null;显然这是无意义的。为了解决这一问题,引入了default关键字:
代码如下:
class TestDefault
{
public T foo()
{
return default(T);
}
}
以下是测试用的代码,看了之后就应该很快能明白,default关键字的作用:
代码如下:
class Program
{
static void Main(string[] args)
{
TestDefault t1 = new TestDefault();
int i = t1.foo();
System.Diagnostics.Debug.Assert(i == 0);
TestDefault t2 = new TestDefault();
object o = t2.foo();
System.Diagnostics.Debug.Assert(o == null);
}
}
最后说明一下,在.net 2.0的早期preview中,没有default关键字,使用如下的方式实现default关键字的功能:
代码如下:
class TestDefault
{
public T foo()
{
return T.default;
}
}
这段代码在vs 2005 beta1中,已经不能通过编译了。
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。