C#中的dynamic数组

有什么方法在C#中创builddynamic数组?

看一下通用列表 。

用代码示例展开Chris和Migol的回答。

使用数组

 Student[] array = new Student[2]; array[0] = new Student("bob"); array[1] = new Student("joe"); 

使用通用列表。 在引擎盖下,List <T>类使用一个数组来存储,但是这样做的方式可以使其有效地增长。

 List<Student> list = new List<Student>(); list.Add(new Student("bob")); list.Add(new Student("joe")); Student joe = list[1]; 

List<T>为强types,或ArrayList如果您有.NET 1.1或爱铸造variables。

有时候普通数组比普通列表更受欢迎,因为它们更方便(例如,对于昂贵的计算 – 例如数字代数应用,或者用于与统计软件(如R或Matlab)交换数据)

在这种情况下,您可以在dynamic启动List之后使用ToArray()方法

 List<string> list = new List<string>(); list.Add("one"); list.Add("two"); list.Add("three"); string[] array = list.ToArray(); 

当然,只有当数组的大小从来不知道也不是固定的时候才有意义。 如果你已经知道你的数组在程序某一点的大小,最好把它作为一个固定长度的数组来启动。 (例如,如果您从ResultSet中检索数据,则可以计算其大小并dynamic地启动该大小的数组)

问候,

MJ

使用实际上是实现数组的数组列表 。 它需要最初的数组大小为4,当它满了,一个新的数组被创build的双倍大小和第一个数组的数据被复制到第二个数组,现在新的项目被插入到新的数组。 另外,第二个数组的名称会创build第一个别名,以便可以像前一个名称一样访问它,并且第一个数组将被处理

为什么我不能这样做:dynamic x = new ExpandoObject {Foo = 12,Bar =“twelve”}

在这里阅读关于ExpandoObject https://msdn.microsoft.com/en-us/library/system.dynamic.expandoobject(v=vs.110).aspx

dynamictypes在这里https://msdn.microsoft.com/en-GB/library/dd264736.aspx

dynamic数组示例:

 Console.WriteLine("Define Array Size? "); int number = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("Enter numbers:\n"); int[] arr = new int[number]; for (int i = 0; i < number; i++) { arr[i] = Convert.ToInt32(Console.ReadLine()); } for (int i = 0; i < arr.Length; i++ ) { Console.WriteLine("Array Index: "+i + " AND Array Item: " + arr[i].ToString()); } Console.ReadKey();