C#基础入门 八

C#基础入门 八

泛型

  • C#中的泛型能够将类型作为参数来传递,即在创建类型时用一个特定的符号,如“T”来作为一个占位符,代替实际的类型,等待实例化时用一个实际的类型来代替。
public class Test<T>
{
	public void Swap(T a,T b)
	{
	}
}
  • 使用泛型类型可以最大限度的重用代码、保护类型的安全以及提高性能
  • 降低了强制转换或装箱操作的成本或风险、可以对泛型进行约束以访问特定数据类型的方法
  • 实例化:Test<int> test1 = new Test<int>();
  • 注意:类型参数并不是只有一个,可以有多个,类型参数可以是编译器识别的任何类型,类型参数的名字不能随便起,不能重名。
public class Test<T,U>
    {
        public void Swap(T a, U b)
        {

        }
    }
class MainClass
    {
        
        public static void Main(string[] args)
        {
            Test<int,double> test1 = new Test<int,double>();
			test1.Swap(1, 2.33);
        }
           
    }
  • public class Test<T>where T:struct代表类型参数T只能是值类型。public class Test<T>where T:class代表类型参数T只能是引用类型。

泛型类和泛型方法

  • 泛型类封装不是特定于具体数据类型的操作,泛型类最常用语集合,像从集合中添加和移除项这样的操作都以大体上相同的方式执行,与所存储数据的类型无关。
  • 创建泛型类的过程:从一个现有的具体类开始,逐一将每个类型更改为类型参数,直至达到通用化和可用性的最佳平衡。
class BaseNode
{
	int a;int b;
}
class BaseNodeGeneric<T>
{
	T a;T b;
}
 public class Person
    {
        public string name;
        public int age;
        public char sex;
        public string Print(string c){
            return c;
        }
	}
下一步:
public class Person<S,I,C>
    {
        public S name;
        public I age;
        public C sex;
        public S Print(S c){
            return c;
        }
    }
    class MainClass
    {
        public static void Main(string[] args)
        {
            Person<string, int, char> person = new Person<string, int, char>();
            Console.WriteLine(person.Print("zxh"));
        }           
    }
posted @ 2018-02-14 22:49  20145218  阅读(104)  评论(0编辑  收藏  举报