栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C# > C#教程

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

C#教程 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

浅谈C#2.0泛型中的变化: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.mshxw.com
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号