Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C语言中的动态数组#_C# - Fatal编程技术网

C# C语言中的动态数组#

C# C语言中的动态数组#,c#,C#,在C#中是否有创建动态数组的方法 看一看。列出强类型的,或者ArrayList如果你有.NET 1.1或者喜欢强制转换变量。用代码示例扩展Chris和Migol的答案 使用数组 Student[] array = new Student[2]; array[0] = new Student("bob"); array[1] = new Student("joe"); 使用通用列表。在后台,List类使用数组进行存储,但这样做的方式允许它高效地增长 List<Student> lis

在C#中是否有创建动态数组的方法

看一看。

列出强类型的,或者
ArrayList
如果你有.NET 1.1或者喜欢强制转换变量。

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

使用数组

Student[] array = new Student[2];
array[0] = new Student("bob");
array[1] = new Student("joe");
使用通用列表。在后台,List类使用数组进行存储,但这样做的方式允许它高效地增长

List<Student> list = new List<Student>();
list.Add(new Student("bob"));
list.Add(new Student("joe"));
Student joe = list[1];
List List=新列表();
列表。添加(新学生(“bob”);
添加(新学生(“乔”);
学生乔=名单[1];

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

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

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

string[] array = list.ToArray();
List List=新列表();
列表。添加(“一”);
列表。添加(“两个”);
列表。添加(“三”);
string[]数组=list.ToArray();
当然,只有当数组的大小事先不知道或固定时,这才有意义。
如果您已经知道程序中某个点的数组大小,那么最好将其作为固定长度数组启动。(例如,如果从结果集检索数据,可以计算其大小并动态启动该大小的数组)

使用实际实现数组的数组列表。它最初采用大小为4的数组,当数组满时,将创建一个大小加倍的新数组,并将第一个数组的数据复制到第二个数组中,现在将新项插入到新数组中。
另外,第二个数组的名称会创建第一个数组的别名,以便可以使用与前一个数组相同的名称访问它,并且第一个数组将被释放

这个答案似乎就是您要寻找的答案

请阅读此处的
ExpandoObject

这里的
动态
类型

动态数组示例:

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();
Console.WriteLine(“定义数组大小?”);
int number=Convert.ToInt32(Console.ReadLine());
Console.WriteLine(“输入数字:\n”);
int[]arr=新的int[编号];
for(int i=0;i
您可以使用动态对象执行此操作:

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

您可以使用集合类中的arraylist对象

using System.Collections;

static void Main()
{
  ArrayList arr = new ArrayList();
}
如果要添加元素,可以使用

arr.Add();

这个例子有一半不好,因为我们都谈到了ArrayList。这个答案比你的@Migol要好,因为它展示了如何实际使用列表,而不仅仅是将其作为关键字提及。“一半坏”->“一半好”->“好”不值得,只要你使用indexer。Arary并不更方便(它们提供列表接口的子集),并且提供几乎相同的性能,因为列表下面使用规则数组。6000000个元素的迭代:List/for:1971ms数组/for:1864ms(基准自)如果必须将数组传递给接口,那么它必须是数组。在传递列表之前,构建列表并将其放入数组要容易得多。我比其他人更喜欢这个答案,因为它解决了这个问题!这个问题(虽然简短且不具描述性)并不是问一般列表-问题可能是问
dynamic[]
(动态类型数组)或
ExpandoObject
我可以-1没有提及的答案these@LukeTO“Brien,动力学是在C#4.0中引入的,这是在最初提出这个问题整整一年后发布的。OP可能是在询问一个可调整大小的数据结构,比如只包含文章链接的答案是没有帮助的。无法保证链接将保持活动状态。@JamEngulfer这是不真实的。如果他的链接文本是“看看这个”和“这个”链接,我同意你的看法。如果你删除了链接,看看剩下的内容,OP对“查看通用列表”的回答是大量的信息,可以让未来的读者在谷歌上搜索……如果你仍然陷在旧泥潭中,用[]代替If List,你可以使用Array.Resize()。这是一个很好的例子。链接dotnetperls.com/array-resize无效。(供参考)为什么不使用该列表?