在C#中是否有创建动态数组的方法?
请查看通用列表。
dynamic[]
https://msdn.microsoft.com/zh-cn/library/dd264736.aspx(动态类型的数组)或者 ExpandoObject
https://msdn.microsoft.com/zh-cn/library/system.dynamic.expandoobject(v=vs.110).aspx。我可以因为没有提到这些而将回答评分为-1。 - Luke T O'Brien结合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];
有时候普通数组比泛型列表更受欢迎,因为它们更方便(例如用于数值代数应用程序的更好性能,或与统计软件如R或Matlab交换数据)
在这种情况下,您可以在动态初始化列表后使用ToArray()方法。
List<string> list = new List<string>();
list.Add("one");
list.Add("two");
list.Add("three");
string[] array = list.ToArray();
当然,这仅在数组的大小从未知且不固定时才有意义。如果您在程序的某个点上已经知道了数组的大小,最好将其初始化为固定长度的数组。(例如,如果您从ResultSet检索数据,则可以计算其大小并初始化该大小的数组,动态地)List<T>
是一个强类型的集合,如果你使用的是.NET 1.1或者喜欢进行变量转换,可以考虑使用 ArrayList
。
您可以使用动态对象来实现这一点:
var dynamicKeyValueArray = new[] { new {Key = "K1", Value = 10}, new {Key = "K2", Value = 5} };
foreach(var keyvalue in dynamicKeyValueArray)
{
Console.Log(keyvalue.Key);
Console.Log(keyvalue.Value);
}
Dynamic Array Example:
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();
using System.Collections;
static void Main()
{
ArrayList arr = new ArrayList();
}
。
arr.Add();
这个答案似乎是你要找的答案 为什么我不能这样做:dynamic x = new ExpandoObject { Foo = 12, Bar = "twelve" }
在这里阅读关于 ExpandoObject
的内容 https://msdn.microsoft.com/zh-cn/library/system.dynamic.expandoobject(v=vs.110).aspx
以及关于 dynamic
类型的内容 https://msdn.microsoft.com/zh-cn/library/dd264736.aspx