泛型

方法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的使用

以上就是泛型的简单介绍。

 

posted @ 2017-11-30 10:50  吴祥锋  阅读(96)  评论(0)    收藏  举报