泛型
方法1、
1 public void ShowInt(int iParmeter){ 2 Console.writeLine($"{iparmeter}的类型为{iParmeter.getType()}"); 3 } 4 public void ShowString (string sParmeter){ 5 Console.writeLine($"{sparmeter}的类型为{sParmeter.getType()}"); 6 }
如方法1,在有不同的参数时,就要定义不同的方法,用于参数传递的准确性。
此时如果要传输一个bool类型的参数,就需要再次定义一个ShowBool(bool bParmeter)方法
但是,在面向对象的语言中,Object是所有类型的父类,任何父类出现的地方,都可以用子类来代替。
方法2、
1 public void ShowObj (Object oParmeter){ 2 Console.writeLine($"{oparmeter}的类型为{oParmeter.getType()}"); 3 }
此时,不管传递什么类型的参数,由于都是继承自Object的,所以,一个方法就代替了上面的两个方法甚至更多
但是,在使用Object的时候,难免会有装箱拆箱的损耗计算机性能的操作,所以,在.NET Framework2.0中,出现了泛型的概念
泛型是程序设计语言的一种特性,允许程序猿在强类型设计语言中编写代码时定义一些可变部分,这些部分在使用前必须做出声明。
方法3、
1 1 public void ShowGeneric<T> (T tParmeter){ 2 2 Console.writeLine($"{tparmeter}的类型为{tParmeter.getType()}"); 3 3 }
该方法的好处是,并不直接声明参数类型,而是等到调用时,才去定义参数类型。
ShowGeneric<int>(iParmeter) ShowGeneric<string>(sParmeter) 省去了装箱拆箱的操作
泛型约束
1 public void ShowGeneric<T> (T tParmeter) where T:Student 2 { 3 string name = t.Name; 4 int age = t.Age; 5 Console.writeLine($"{tparmeter}的类型为{tParmeter.getType()}"); 6 }
加上泛型约束(where T:Student),就可以让该泛型直接调用Student的属性和方法
当然,该泛型也就只能用于Student的使用
以上就是泛型的简单介绍。

浙公网安备 33010602011771号