C#高阶-泛型

1.概念:泛型(generic)是C#语言2.0和通用语言运行时(CLR)的一个新特性。类型参数使得设计类和方法时,不必确定一个或多个具体参数,其的具体参数可延迟到客户代码中声明、实现。这意味着使用泛型的类型参数T,写一个类MyList,客户代码可以这样调用:MyList, MyList或 MyList。这避免了运行时类型转换或装箱操作的代价和风险。

2.泛型方法解决用一个方法,满足不同参数类型,做相同的事

3.延迟声明,把参数类型的声明推迟到调用

4.泛型与直接传object的区别:object是引用类型,传入值类型会进行装箱操作,消耗性能

public static void Show<T>(T tParameter)
        {

        }

        public static void ShowObject(object oParameter)
        {

        }   

5.泛型约束:

class MyList<T> 
    where T: Employee, IEmployee,  IComparable<T>,  new()
{
     ...      
}

下表列出了五类约束:

约束描述
where T: struct类型参数必须为值类型。
where T : class类型参数必须为类型。
where T : new()类型参数必须有一个公有、无参的构造函数。当于其它约束联合使用时,new()约束必须放在最后。
where T : < base class name>类型参数必须是指定的基类型或是派生自指定的基类型。
where T : < interface name>类型参数必须是指定的接口或是指定接口的实现。可以指定多个接口约束。接口约束也可以是泛型的。

注:泛型约束的基类约束不能是sealed

6.泛型代码中的default关键字

 public static T GetT<T>(T t)
        {
            return default(T);
        }

会根据T的类型不同赋予默认值,它对引用类型返回空,对值类型的Int返回0、datetime返回0001/1/1 0:00:00、bool返回false。

参考资料:https://www.cnblogs.com/birdshover/articles/392127.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值