C#中的动态数组

时间:2009-02-27 13:58:26

标签: c#

有没有在C#中创建动态数组的方法?

9 个答案:

答案 0 :(得分:144)

看看Generic Lists

答案 1 :(得分:79)

使用代码示例扩展Chris和Migol的答案。

使用数组

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

使用通用列表。在引擎盖下,List< T> class使用数组进行存储,但这种方式允许它有效地增长。

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

答案 2 :(得分:49)

有时普通数组比通用列表更受欢迎,因为它们更方便(例如,对于昂贵的计算 - 数值代数应用程序更好的性能,或者用R或Matlab等统计软件交换数据)

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

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

string[] array = list.ToArray();

当然,只有当数组的大小从未被知道或修复 ex-ante 时才有意义。 如果您已经知道程序的某个位置的数组大小,最好将其作为固定长度数组启动。 (例如,如果从ResultSet中检索数据,则可以计算其大小并动态启动该大小的数组)

答案 3 :(得分:37)

对于强类型的

List<T>,如果您有.NET 1.1或喜欢投射变量,则为ArrayList

答案 4 :(得分:1)

使用数组列表,它实际上是实现数组。它需要最初大小为4的数组,当它变满时,会创建一个新的数组,其双倍大小和第一个数组的数据被复制到第二个数组,现在新项目被插入到新数组中。 第二个数组的名称也会创建第一个别名,以便可以使用与之前相同的名称访问它,并且第一个数组将被释放

答案 5 :(得分:1)

动态数组示例:

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();

答案 6 :(得分:1)

您可以使用collections类中的arraylist对象

using system.collections;
   static void main()
        {
        Arrylist arr=new Arrylist();
         }

n您想添加可以使用的元素

arr.add();

答案 7 :(得分:0)

答案 8 :(得分:0)

您可以对动态对象执行此操作:

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);
}