C#数组,如何创建空数组?

时间:2013-11-01 23:04:24

标签: c# php arrays

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

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

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

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

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

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

5 个答案:

答案 0 :(得分:4)

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

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

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

int secondNumber = arrayNums[1];

答案 1 :(得分:1)

c#数组具有静态大小。

int[] arraynums = new int[3];

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

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

答案 2 :(得分:1)

我建议您使用其他收藏集,例如List<T>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!

答案 3 :(得分:0)

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

答案 4 :(得分:0)

较新的方法,自.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