在C#中,当您不知道数组大小时,如何初始化一个一维数组?

3

我一直在尝试初始化一个一维数组,但是不知道它的大小,但是一直无法成功;请告诉我如何在C#中声明一个大小会根据需求动态增加的数组。

我的意思是,想做这样的事情

class A
{
    int[] myarray;
    int i=0;
    while(i<5)
    {
        myarray[i]==n;
        n=n%10;
        i++;
    }
}

请帮忙!!!

4
每种语言的答案都不同。您实际使用的是哪种语言? - Joren
1
但是在你的例子中,你知道它是 int[5] - Albin Sunnanbo
如果我修复了你的代码格式,请不要再次删除它... - Albin Sunnanbo
6个回答

5
在C语言中,你需要使用Malloc和Realloc来进行操作,在C#中,你应该优先考虑使用List。
Class A {
   List<int> integerList = new List<int>();

   void DoSometing() {   
   for(int i = 0; i < somewhat; i++) {
         integerList.Add(i);
      }
   }
}

realloc很邪恶,不要去那里。 - Brian Rasmussen
当你调整 STL 向量的大小超过其容量时,它会分配一个新的块,复制数据并释放原始块。这就是 realloc 的作用。我想 C# 的列表也是如此做的。 - Goz

1
在C++中:
 #include <vector>

 // ...

 std::vector<int> myVector;  // will resize as you 'push_back'

1

这些语言中的解决方案如下:

C语言: malloc()realloc()

C++语言: std::vector

C#语言: List


0

这太容易了...

int IAmTheSize = 183475; // just a random int. Replace it with your value.
int[] myArray = new int[IAmTheSize];

您可以使用任何大小初始化数组。 但是,如果您不知道它的确切大小,您可能需要查看 List<> 类。

List<int> myList;

int i=0;
while(i < 5)
{
    myList.Add(n);
    n = n % 10;
    i++;
}

从您所执行的操作中,我意识到这是某种形式的练习。 顺便说一下,在数组中分配值是使用=运算符完成的,例如myarray[i]=n;,而不是myarray[i]==n;(实际上将返回一个布尔/逻辑值)。


您可以在此处阅读有关 List<> 类的更多信息:http://msdn.microsoft.com/zh-cn/library/6sh2ey19.aspx


0
用户还可以使用ARRAYLIST声明这种类型的数组。
System.Collections命名空间定义了一个称为ArrayList的类,它可以存储动态大小的对象数组。
   ArrayList cities = new ArrayList();
   cities.Add("Pune");
   cities.Add("Mumbai");

0

在 C 中,您使用指针的 malloc。
在 C++ 中,您可以直接使用 std::vector< T >。
在 C# 中使用 List< T >。

也就是说,在 C 中使用指针,在 C++ 和 C# 中使用方便的容器类之一。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接