在C#中,一些集合类型(例如ArrayList
和HashTable
)都有泛型替代品,它们分别是List<T>
和Dictionary<TKey, TValue>
。
那么,数组是否也有泛型替代品呢?
int[]
。实际上很少使用“弱类型”Array
- 事实上,我认为你不能真正地创建一个。每个Array
都是强类型的,即使你不这样引用它。void SomeFunction(int[] x)
您也可以这样考虑:
void SomeFunction<T>(T[] x)
在这里,程序员只选择使用 int
作为类型参数进行调用:
SomeFunction<int>(myIntArray)
有特殊的编译器支持,数组一直以来都是相当通用的。
例如,System.Array允许输入对象,但int[]不允许。
在Jon的回答上进行扩展
数组没有通用替代品,因为拥有通用数组是完全可以的。
public static T[] CreateArray<T>(T item1, T item2) {
T[] array = new T[2];
array[0] = item1;
array[1] = item2;
return array;
}
没有必要使用通用的替代方案,因为当你定义一个数组时,你会声明数组的类型。你提到的所有类都是简单的集合类。而数组是一种完全不同的数据结构。