3

我正在学习 c#,我的主要语言现在是 php。我想知道如何(或是否)可以在 c# 中创建一个空数组。

在 php 中,您可以创建一个数组,然后向其中添加任意数量的条目。

$multiples=array();
$multiples[] = 1;
$multiples[] = 2;
$multiples[] = 3;

在 c# 中,我在做类似的事情时遇到了麻烦:

int[] arraynums = new int[];
arraynums[] = 1;
arraynums[] = 2;
arraynums[] = 3;

这给出了错误“数组创建必须具有数组大小或数组初始值设定项”。如果我不知道要输入多少个条目,我该怎么做?有没有解决的办法?

4

5 回答 5

5

如果您事先不知道大小,请使用 aList<T>而不是数组。在 C# 中,数组是固定大小的,您必须在创建它时指定大小。

var arrayNums = new List<int>();
arrayNums.Add(1);
arrayNums.Add(2);

添加项目后,您可以按索引提取它们,就像使用数组一样:

int secondNumber = arrayNums[1];
于 2013-11-01T23:06:05.220 回答
1

c# 数组具有静态大小。

int[] arraynums = new int[3];

或者

int[] arraynums = {1, 2, 3}

如果要使用动态大小的数组,则应使用 ArrayList 或 List。

于 2013-11-01T23:15:02.773 回答
1

我建议使用不同的集合,例如 aList<T>或 a Dictionary<TKey, TValue>。在 PHP 中将集合称为数组只是用词不当。数组是一个连续的固定大小的内存块,它只包含一种类型,并通过计算给定索引的偏移量来提供直接访问。PHP 中的数据类型不做这些事情。

例子;

List<int> my_ints = new List<int>();
my_ints.Add(500);


Dictionary<string, int> ids = new Dictionary<string, int>();
ids.Add("Evan", 1);

int evansId = ids["Evan"];

何时使用数组的示例;

string[] lines = File.ReadAllLines(myPath);
for (int i = 0; i < lines.Length; i++)
    // i perform better than other collections here!
于 2013-11-01T23:16:34.990 回答
1

较新的方式,因为 .NET 4.6 / Core 1.0,以防有人遇到这个问题:

System.Array.Empty<T>()方法。

如果多次调用这会更有效,因为它由编译时生成的单个静态只读数组支持。

https://docs.microsoft.com/en-us/dotnet/api/system.array.empty https://referencesource.microsoft.com/#mscorlib/system/array.cs,3079

于 2020-12-02T22:33:37.247 回答
0

试试这个帖子:C# 中的动态数组。它在第一个答案中有几个链接,显示了索引数据的替代方式。在 C# 中,没有办法制作动态数组,但这些链接显示了一些解决方法。

于 2013-11-01T23:15:11.367 回答