| 在处理引用类型时,虽然没有装箱和折箱操作,但将用到数据类型的强制转换操作,增加处理器的负担。 在数据类型的强制转换上还有更严重的问题(假设stack是Stack的一个实例): Node1 x = new Node1(); stack.Push(x); Node2 y = (Node2)stack.Pop(); 上面的代码在编译时是完全没问题的,但由于Push了一个Node1类型的数据,但在Pop时却要求转换为Node2类型,这将出现程序运行时的类型转换异常,但却逃离了编译器的检查。 针对object类型栈的问题,我们引入泛型,他可以优雅地解决这些问题。泛型用用一个通过的数据类型T来代替object,在类实例化时指定T的类型,运行时(Runtime)自动编译为本地代码,运行效率和代码质量都有很大提高,并且保证数据类型安全。 使用泛型 下面是用泛型来重写上面的栈,用一个通用的数据类型T来作为一个占位符,等待在实例化时用一个实际的类型来代替。让我们来看看泛型的威力: public class Stack<T> { private T[] m_item; public T Pop(){...}
|
| 共12页: 上一页 [1] [2] 3 [4] [5] [6] [7] [8] [9] [10] [11] [12] 下一页 |
评论加载中…