C# 如何在运行时分配数组值
假设我有一个数组C# 如何在运行时分配数组值,c#,C#,假设我有一个数组 int[] i = {1,2,3,4,5}; 这里我给它赋值。但在我的问题中,我只在运行时得到这些值。 如何将它们分配给数组 例如: 我从用户那里得到了数组的最大大小以及给它们的值,现在我如何将它们分配给数组int[] 或者我可以使用任何其他数据类型,如ArrayList等,我可以在末尾将其转换为Int[]吗?使用List,然后在末尾对其调用ToArray(),以创建数组。但是你真的需要一个数组吗?通常,使用其他集合类型更容易。正如埃里克·利珀特所写的那样,“ 但是,您可以明
int[] i = {1,2,3,4,5};
这里我给它赋值。但在我的问题中,我只在运行时得到这些值。
如何将它们分配给数组
例如:
我从用户那里得到了数组的最大大小以及给它们的值,现在我如何将它们分配给数组int[]
或者我可以使用任何其他数据类型,如ArrayList等,我可以在末尾将其转换为Int[]吗?使用List
,然后在末尾对其调用ToArray()
,以创建数组。但是你真的需要一个数组吗?通常,使用其他集合类型更容易。正如埃里克·利珀特所写的那样,“
但是,您可以明确地这样做:
using System;
public class Test
{
static void Main()
{
int size = ReadInt32FromConsole("Please enter array size");
int[] array = new int[size];
for (int i=0; i < size; i++)
{
array[i] = ReadInt32FromConsole("Please enter element " + i);
}
Console.WriteLine("Finished:");
foreach (int i in array)
{
Console.WriteLine(i);
}
}
static int ReadInt32FromConsole(string message)
{
Console.Write(message);
Console.Write(": ");
string line = Console.ReadLine();
// Include error checking in real code!
return int.Parse(line);
}
}
使用系统;
公开课考试
{
静态void Main()
{
int size=ReadInt32FromConsole(“请输入数组大小”);
int[]数组=新的int[size];
对于(int i=0;i
嗯,最简单的方法是使用列表
:
如果您无法预测数组的大小,那么第二种方法就没有用处,因为每次添加项时重新分配数组的成本很高;
列表
使用加倍策略来最小化所需的重新分配。如果您想要一个数组,它的大小在执行过程中会发生变化,那么您应该使用另一个数据结构。通用列表就可以了。然后,您可以动态地向其中添加元素
编辑:我在写我的答案时,马克发布了他的答案。这正是我的意思。你是说
int[] array = { 1, 2, 3, 4, 5 };
array = new int[] { 1, 3, 5, 7, 9 };
array = new int[] { 100, 53, 25, 787, 39 };
array = new int[] { 100, 53, 25, 787, 39, 500 };
您可以只使用下面的行,而不调用单独的函数:
using System;
public class Test
{
static void Main()
{
Console.WriteLine("Please enter array size");
int size = Convert.ToInt32(Console.ReadLine());
int[] array = new int[size];
for (int i=0; i < size; i++)
{
Console.WriteLine("Please enter element " + i);
array[i] = Convert.ToInt32(Console.ReadLine());
}
Console.WriteLine("Finished:");
foreach (int i in array)
{
Console.WriteLine(i);
}
}
使用系统;
公开课考试
{
静态void Main()
{
Console.WriteLine(“请输入数组大小”);
int size=Convert.ToInt32(Console.ReadLine());
int[]数组=新的int[size];
对于(int i=0;i
同意。既然通用列表非常容易使用,我几乎再也不用数组了。obj.myIntArray=(新列表{1,2})。ToArray();没有办法使用“{1,2,3,4,5}”吗?@Xonatron是的,集合初始值设定项是在过去7年中添加的,请参见lamarant的评论。但是,如果值在编译时已知,您可以直接转到数组。这不是最重要的答案吗?
int[] array = { 1, 2, 3, 4, 5 };
array = new int[] { 1, 3, 5, 7, 9 };
array = new int[] { 100, 53, 25, 787, 39 };
array = new int[] { 100, 53, 25, 787, 39, 500 };
using System;
public class Test
{
static void Main()
{
Console.WriteLine("Please enter array size");
int size = Convert.ToInt32(Console.ReadLine());
int[] array = new int[size];
for (int i=0; i < size; i++)
{
Console.WriteLine("Please enter element " + i);
array[i] = Convert.ToInt32(Console.ReadLine());
}
Console.WriteLine("Finished:");
foreach (int i in array)
{
Console.WriteLine(i);
}
}