2010-11-17 128 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