泛型

当有一类事务,除了类型,其他都相同外,他们可以共同继承一个泛型类,在泛型类里面,使用了抽象类型,这样只要在使用的时候赋予实际需求的类型就行了。

这样大大的提高的代码的重用性。

一、如何定义一个泛型类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace GenericTest
{
    public class BaseInfo<T>//一个基类,存储了十条T类型的数据,T是抽象类型
    {
        public T[] baseInfo = new T[10];//可以存储10条信息,本处将用来存储编号与姓名
        public T this[int i]
        {
            get { return baseInfo[i]; }
            set { baseInfo[i] = value;}
        }
    }
}
BaseInfo

在这个类中T就当作int  float一类的类型进行操作,但是这个类中,T并不含有一些具体类型所拥有的方法,例如int.Parse(),T只有object类型有的方法。

实例化泛型时,做如下定义:

1 BaseInfo<int> baseInfo = new BaseInfo<int>();

这样便可以像普通类的实例一样使用baseInfo了,其中T被实例化为int

二、泛型的继承

1、泛型类继承中,父类的类型参数已被实例化,这种情况下子类不一定必须是泛型类;

2、父类的类型参数没有被实例化,但来源于子类,也就是说父类和子类都是泛型类,并且二者有相同的类型参数;

1 //如果这样写的话,显然会报找不到类型T,S的错误  
2 public class TestChild : Test< T, S> { }  
3  
4 //正确的写法应该是  
5 public class TestChild : Test< string, int>{ }  
6 public class TestChild< T, S> : Test< T, S> { }  
7 public class TestChild< T, S> : Test< String, int> { } 
View Code
原文地址:https://www.cnblogs.com/tntboom/p/3973236.html