C# 泛型的原理、优势、约束、协变与逆变

本文详细探讨了C#中的泛型,包括泛型的声明、原理,解释了泛型带来的类型安全和性能提升的优势。还深入讨论了泛型参数的约束,如where关键字的应用。此外,文章着重阐述了泛型的协变与逆变概念,通过实例展示了如何自定义协变和逆变接口,并提到了.NET框架中内建的协变逆变泛型特性。
摘要由CSDN通过智能技术生成
泛形声明

泛型有泛型类,泛型接口,泛型方法和泛型委托。

public class GenericClass<T>(){}
public interface GenericInterface<T>(){}
public void GenericMethod<T>(){}
public delegate GenericDelegate<T>(){} 
泛型原理

在泛型的定义中,类型参数是一个占位符(placeholder),通常为一个大写字母,如T。在客户代码声明、实例化该类型的变量时,把T替换为客户代码所指定的数据类型。C#引入泛型就是把具体声明延迟,也就是说在编译时并不知道T是什么类型,在JIT运行的时候才把T替换为指定类型。
在这里插入图片描述

泛型优势

泛型会在运行时生成一个专用版本的栈,可以理解为一份数据副本,极大地降低了代码膨胀,提高泛型的速度,比装拆箱的速度要快很多。

泛型参数的约束

泛型使用关键字where来实现约束。约束就是保证泛型代码中要支持所需调用的操作或方法。例如:

public void Test<T>(T tParameter)
 where T: classXXX
{
    tParameter.Show();
}

在上面代码T必须是个类,而且这个类里要有Show()这个方法࿰

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值