c#中的泛型

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c#中的泛型相关的知识,希望对你有一定的参考价值。

定义:

泛型:将类型参数化以达到代码复用提高软件开发工作效率的一种数据类型

为使用c#语言编写面向对象程序增加了极大的效率和灵活性。不会强行对值类型进行装箱和拆箱,或对引用类型进行向下强制类型转换,所以性能得到提高。


1.List<T>泛型

  1. List<int> ll = new List<int>();
  2. ll.Add(3);
  3. ll.Add(4);
  4. //ll[0] = 1; 不能用这种声明方法
  5. List<string> ss = new List<string>() { "jing", "dong", "yun" };
可以使用两种方法来遍历输出
  1. foreach (var item in ss)
  2. {
  3. Console.WriteLine(item);
  4. }
  5. for (int j = 0; j < 3; j++)
  6. {
  7. Console.WriteLine(ss[j]);
  8. }


泛型也是一样。in 关键字表示可能逆变,out 关键字表示可能协变。


5种泛型约束

1.基类约束【类型参数必须是BaseClass或者是其子类】

class A<T> where T : BaseClass { }

2.接口约束【类型参数必须是实现了IPrint接口的类型】

class B<T> where T : IPrint { }

3.构造器约束【类型参数必须是有一个无参的构造器的类型】

class C<T> where T : new( ) { }

4.值类型 / 引用类型约束【类型参数必须是引用类型】

class D<T> where T : class { }

5.值类型 / 引用类型约束【类型参数必须是值类型

class E<T> where T : strct { }












以上是关于c#中的泛型的主要内容,如果未能解决你的问题,请参考以下文章

C#中的泛型

C#中的泛型详解

c#中的泛型

C# 中的泛型与非泛型性能

C#中的泛型和泛型集合

c# 中的泛型 & 访问 T 的静态成员