这篇文章主要介绍“C#高级静态语言效率利器之泛型怎么引用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C#高级静态语言效率利器之泛型怎么引用”文章能帮助大家解决问题。所谓泛型,就是创建一个函数,对所有数据类型都生效。最常见的例子就是运算符,毕竟1+1=2,1.0+1.0=2.0,足以看出+是对多种数据类型起作用的。但是,如想创建一个函数add(int a, int b),那么输入add(1.0, 1.0)是肯定要报错的,VS直接就给标红了。泛型的出现,就很好地解决了这个尴尬的问题上面代码中,T表示某种数据类型,在调用函数add时,根据add后面的加以声明。但如果就此就写return a+b显然也是不行的,因为+这种运算符并没有对T进行重载,编辑器并不会允许两种未知的类型相加。这个时候就需要用到dynamic,用来让编辑器放弃类型检查,将任何可能发生的错误都留给运行阶段。最后,运行结果为2
2dynamic用着确实爽,但后果就是责任自负,这玩意要是用在团队协作的场合,简直就是灾难,毕竟并非所有对象都可以驾驭加法。免费云主机域名所以,C#的泛型,是可以被约束的泛型,关键就是where,将上述代码写为where T : struct表示T必须是数值类型的一种,所以编译器的类型检查仍会发挥作用,在调用add时,如果T不是数值类型,就会报错。C#一共有5种约束方案,列表如下不同类型的约束,或相同类型不同种类的约束,一般是可以混用的,如果不能混用,编译器会提醒。比如struct几乎不能和其他类型混用。如果new()参与了约束,则放在最后。除了函数可以采用泛型,类当然也可以,不仅可以,而且还能继承。MyList相当于是给数组套了一层壳,其构造函数并不存在什么难以理解的地方,唯一有些问题的可能是下面的索引器public T this[int index],这种写法可以实现方括号形式的索引。可以测试一下结果就不粘贴了,接下来新建一个子类然后测试一下结果为2
1
0C#通过泛型定义了很多数据结构,例如在讲解switch…case时提到的字典这种的写法,正是泛型的特点,其中U, V就是可以随意声明的变量。如果查看字典的类型参数,可以发现其定义方法是这样的考虑到本节并不是为了将面向对象,所以字典继承的那一大坨类就省略了,关键是where Tkey:notnull,也就是说,字典对键值对的要求只有一个,就是键不得为null。除了字典之外,还有一些常见的数据结构采用了泛型,列表如下,没事儿可以练习练习。委托,是函数的函数;泛型,可以让函数的参数类型更加灵活,二者结合在一起,就是更加灵活的函数的函数,即泛型委托。只要学过了泛型和委托,那么对泛型委托将毫无理解上的难度,回想前面定义的运算符委托再回想定义泛型时的
相关推荐: 怎么用IntelliJ IDEA 2022.1.1创建java项目
本篇内容介绍了“怎么用IntelliJIDEA2022.1.1创建java项目”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!首次打开IntelliJ IDEA …
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。