我正在学习c#,现在我的主要语言是php。我想知道如何(或者如果)你可以在c#中创建一个空数组。
在php中,您可以创建一个数组,然后向其中添加任意数量的条目。
$multiples=array();
$multiples[] = 1;
$multiples[] = 2;
$multiples[] = 3;
在c#中,我在做类似的事情时遇到了麻烦:
int[] arraynums = new int[];
arraynums[] = 1;
arraynums[] = 2;
arraynums[] = 3;
这给出了错误“数组创建必须具有数组大小或数组初始值设定项”。如果我不知道我想要制作多少条目,我该怎么做?有办法解决这个问题吗?
答案 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