使用的好处有那些好处呢?
1,类型安全性
2,性能提高
3,代码重用
4,扩展性
为什么会有这几个好处,我们来解析一下。
在我们讨论泛型的优点的时候,先来看看怎么使用泛型,泛型一般与集合一起使用。但是我们也可以创造自己的泛型类。这里我们定义一个类Person。这个类有3个变量,ID,FirstName,LastName.FirstName和LastName的类型很确定就是string。而ID的类型我们却不确定,这里的不确定是为了更好的扩展性,而不是说不能确定,比如ID可以是纯int的格式,比如1,2.同时也可以是string的ET001,ET002.当然我们可以通过拼接字符串来完成这个的操作,但是如果我们使用泛型,就能实现很好的扩展性,性能,安全性。类如下如下。
class Program
{
static void Main(string[] args)
{
Person<int> person = new Person<int>(1, "Edrick", "Liu");
Person<string> personString = new Person<string>("ET001", "Edrick", "Liu");
Person<bool> personBool = new Person<bool>(true, "ai", "Liu");
Console.WriteLine("INT:ID:{0},FirstName:{1},LastName:{2}", person.T1, person.FirstName, person.LastName);
Console.WriteLine("STRING:ID:{0},FirstName:{1},LastName:{2}", personString.T1, personString.FirstName, personString.LastName);
Console.WriteLine("BOOL:ID:{0},FirstName:{1},LastName:{2}", personBool.T1, personBool.FirstName, personBool.LastName);
}
public class Person<T>
{
private T _t;
public T T1
{
get { return _t; }
set { _t = value; }
}
private string _firstName;
public string FirstName
{
get { return _firstName; }
set { _firstName = value; }
}
private string _lastName;
public string LastName
{
get { return _lastName; }
set { _lastName = value; }
}
public Person() { }
public Person(T t1, string firstName, string lastName)
{
this._t = t1;
this._firstName = firstName;
this._lastName = lastName;
}
}
}
泛型类的定义是很简单的<T>,这样就可以定义泛型类,这里我们使用了泛型T,预留了一个类型。泛型所能理解的操作是:
1这里是一个类型,
2这个设计时未知,
3我们可以在以后指定实际类型来替换这个类型。
其实有点像委托。只不过委托预留的是一个具有特定签名的方法抽象。而泛型预留的是一个类型。这就足以说明面向对象其实从某种角度来说就是面向抽象而不是面向具体的实现。
这里我们定义的泛型类型T,就可以在后续使用时使用不同的类型来替换。这里就可以做到我们前面提到的使用int,或者string,或者其他的任何我们想要的类型,甚至是我们自己定义的类型。
欢迎加群讨论:512420277