前段时间看别人的程序,对于classname<T>这种结构一直不大明白。今天看了C#泛型才明白,同时也看到了C#泛型的优点。下面我借用msdn上的例子:
看一个常用的数据结构(Stack) 实例化
public class Stack Stack stack = new Stack();
{object[] m_Items; stack.Push(1);
public void Push(object item) {...} int number = (int)stack.Pop();
public object Pop() {...}
}
编译时任何类型都可以转换成object,因此就无法保证运行时的类型的安全性。有可能就会写下这样错误的代码:
Stack stack = new Stack();
stack.Push("test");
int number = (int)stack.Pop();
如果编写特定类型的数据结构,又会带来代码冗余,重用率低,而且一个数据结构的变更会带来所有类型的数据结构做相应的改变等不便。但是如果我们用C#泛型一切就相对方便多了。
public class Stack <T> Stack<int> stack = new Stack<int>(); Stack<string> stack = new Stack<string>()
{T[] m_Items; stack.Push(1); stack.Push("test");
public void Push(T item) {...} int number = stack.Pop(); string str = stack.Pop();
public T Pop() {...}
}
初学,理解的还不够深入,见笑了。