【发布时间】:2009-02-24 17:36:38
【问题描述】:
在 C# 中,某些集合(例如 ArrayList 和 HashTable)具有通用替代项,即 List<T> 和 Dictionary<TKey, TValue>。
Array 是否也有通用替代方案?
【问题讨论】:
在 C# 中,某些集合(例如 ArrayList 和 HashTable)具有通用替代项,即 List<T> 和 Dictionary<TKey, TValue>。
Array 是否也有通用替代方案?
【问题讨论】:
不 - 只使用强类型数组,例如int[]。首先使用“弱类型”Array 是比较少见的——事实上,我不相信你真的可以创建一个。每个Array 都是一个真正的强类型,即使你没有那样引用它。
【讨论】:
如果您正在寻找与数组最相似的通用集合类型,那么您可能需要List<T>。但这并不是一回事。
扩展其他人所说的:拥有泛型类型的目的是让程序员可以根据当前程序的需要使用这些泛型类型的类型特定实例。数组已经是特定类型的。您可以随时使用T[]。
例如,看这个简单的函数定义:
void SomeFunction(int[] x)
你也可以这样想:
void SomeFunction<T>(T[] x)
程序员刚刚选择使用int 作为类型参数调用它:
SomeFunction<int>(myIntArray)
【讨论】:
数组在特殊的编译器支持下一直是通用的。
例如System.Array 允许对象进入,但 int[] 不允许。
【讨论】:
扩展乔恩的答案
数组没有通用的替代品,因为拥有一个通用数组就很好。
public static T[] CreateArray<T>(T item1, T item2) {
T[] array = new T[2];
array[0] = item1;
array[1] = item2;
return array;
}
【讨论】:
不需要通用替代方案,因为当您定义数组时,您会声明数组的类型。您提到的所有类都是简单的集合类。数组是完全不同的数据结构。
【讨论】: