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