您可以存储多种数据类型System.Array
吗?谷歌的所有点击都表明我不能这样做,除非数组是对象。
问问题
20875 次
4 回答
11
你从不System.Array
直接使用。
如果要存储不同的类型,请使用System.Collections.ArrayList
或 object[]
于 2013-01-09T19:36:00.863 回答
1
您可以存储其数据类型等同于或派生自数组数据类型的项。这意味着您可以存储多种数据类型,前提是它们派生自一个公共基类型,或者实现一个公共接口。
于 2013-01-09T19:38:03.737 回答
1
来自 MSDN:
Array 类是支持数组的语言实现的基类。但是,只有系统和编译器可以显式地从 Array 类派生。用户应该使用该语言提供的数组结构。
并且 :
Type.IsArray 和 Type.GetElementType 可能不会使用 Array 返回预期的结果,因为如果将数组强制转换为 Array 类型,则结果是对象,而不是数组。即 typeof(System.Array).IsArray 返回 false,typeof(System.Array).GetElementType 返回 null。
因此,在所有情况下,您都应该避免直接创建实例System.Array
。
于 2013-01-09T19:42:36.770 回答
0
是的,谷歌首页的所有答案都是错误的。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
于 2013-01-09T19:38:30.010 回答