您可以在System.Array
中存储多种数据类型吗?谷歌的所有点击都显示我无法做到这一点,除非数组是对象。
答案 0 :(得分:10)
您永远不会直接使用System.Array
。
如果您想存储不同类型,请使用System.Collections.ArrayList
或object[]
答案 1 :(得分:1)
您可以存储其数据类型等于或派生自数组数据类型的项目。这意味着可以存储多种数据类型,只要它们派生自公共基本类型,或实现公共接口。
答案 2 :(得分:1)
来自MSDN:
Array类是语言实现的基类 支持数组。但是,只有系统和编译器才能派生出来 显式来自Array类。用户应该使用该阵列 语言提供的结构。
另外:
Type.IsArray和Type.GetElementType可能不会返回预期的 结果使用Array,因为如果将数组转换为类型Array, 结果是一个对象,而不是一个数组。那是, typeof(System.Array).IsArray返回false,和 typeof(System.Array).GetElementType返回null。
因此,在所有情况下,您都应该避免直接创建System.Array
的实例。
答案 3 :(得分:0)
是的,Google首页上的所有答案都是错误的。 C#数组是协变的,因为.Net数组被设计为支持多种语言。以下是示例:
class Animal { }
class Cow : Animal { }
class Tiger : Animal { }
int one = 1;
double two = 2.0d;
ValueType[] foo = new ValueType[2];
foo[0] = one;
foo[1] = two;
Animal[] animals = new Animal[2];
animals[0] = new Cow();
animals[1] = new Tiger();
Object[] col = new string[2];
col[0] = 2; // compiles but throws