2010-11-17 130 views
3

我一直在努力尝试在不知道它的大小的情况下初始化1维数组,但是不知道它; 请告诉我如何声明一个数组,其大小将根据C#中的要求动态增加。当您不知道C#中的大小时,如何初始化1维数组?

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

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

请帮助!

+4

答案在每种语言中都不相同。你实际使用哪种语言? – Joren 2010-11-17 13:31:40

+1

但在你的例子中,你知道它是'int [5]' – 2010-11-17 13:34:48

+0

如果我修复你的代码格式,请不要再删除它... – 2010-11-17 13:40:27

回答

0

用户还可以使用的ArrayList

System.Collections命名空间声明这种类型的阵列的定义已知为ArrayList的一类可存储动态大小的对象数组。

ArrayList cities = new ArrayList(); 
    cities.Add("Pune"); 
    cities.Add("Mumbai"); 
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); 
     } 
    } 
} 
+0

realloc是邪恶的,不要去那里。 – 2010-11-17 13:36:02

+0

那么当你调整一个STL向量的大小时,它会分配一个新的块,复制数据,然后释放原始块。这是......呃...... realloc是做什么的。我会想象C#的列表也是一样的。 – Goz 2010-11-17 13:37:39

1

在C++:

#include <vector> 

// ... 

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

在语言的解决方案是:

C:malloc()realloc()

C++:std::vector

C#:List

0

在C中使用指针的malloc。
在C++中,你可以使用std :: vector < T>。
在C#中使用列表< T>。

即在C中使用C++和C#中的指针使用方便的容器类之一。

0

就是这么简单......

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

可以初始化数组(S)与任何尺寸。 但是,如果您不知道其具体的尺寸,您可能需要查看List<>课程。

List<int> myList; 

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

从你做的手术中,我意识到这是某种锻炼。 顺便说一句,在阵列中赋值是用=运算符完成的,如myarray[i]=n;,而不是myarray[i]==n;(将实际返回bool /布尔值/逻辑值)。


可以详细了解List<>类这里:http://msdn.microsoft.com/en-us/library/6sh2ey19.aspx