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
和dynamic
types在这里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();