泛型Default关键字

泛型Default关键字

在泛型类和泛型方法中产生的一个问题是,在预先未知以下情况时,如何将默认值分配给参数化类型T:
(1)T是引用类型还是值类型。
(2)如果T为值类型,则它是数值还是结构。
给定参数化类型T的一个变量t,只有当T为引用类型时,语句t= null才有效;只有当T为数值类型而不是结构时,语句t = 0才能正常使用。解决方案是使用default关键字,此关键字对于引用类型会返回空,对于数值类型会返回零。对于结构,此关键字将返回初始化为零或空的每个结构成员,具体取决于这些结构是值类型还是引用类型。以下来自GenericList类的示例显示了如何使用default关键字。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DefaultGeneric
{
    class Program
    {
        static void Main(string[] args)
        {
        }
    }
    public class GenericList<T>
    {
        private class Node
        {
            public Node Next;
            public T Data;
        }

        private Node head;
        public T GetNext()
        {
            T temp = default(T);
            Node current = head;
            if (current != null)
            {
                temp = current.Data;
                current = current.Next;
            }
            return temp;
        }
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young阅读 3,906评论 1 10
  • object 变量可指向任何类的实例,这让你能够创建可对任何数据类型进程处理的类。然而,这种方法存在几个严重的问题...
    CarlDonitz阅读 937评论 0 5
  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy阅读 9,542评论 1 51
  • 人生若只如初见,何事秋风悲画扇。这世上的情情爱爱总有那么多身不由己。 每年的冬天都会很冷,而这冷宫的冬天更冷...
    鱼小懒_Y阅读 510评论 3 3
  • 似乎没有那家公司比Apple更爱圆角了,事实上,圆角也会让图形/产品看起来更加无侵略性,能够带来更好的用户体验.i...
    阶梯阅读 2,122评论 6 55