討論區快速選單
知識庫快速選單
程式設計俱樂部Facebook粉絲團 Excel也能做到大數據分析?
[ 回上頁 ] [ 討論區發言規則 ]
關於陣列問題的疑惑(內詳)
更改我的閱讀文章字型大小
作者 : x2163126(吃冬瓜補西瓜)
[ 貼文 38 | 人氣 0 | 評價 20 | 評價/貼文 0.53 | 送出評價 7 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2011/11/11 下午 04:49:41
是這樣的,當我想在winform中使用陣列

我就在想,他是如何宣告的,並且開始找資料

然後找到這些
.NET 陣列詳論 中 有C# ,VB ,C++ ,CLR陣列宣告 ,C++/CLI 提供了 Managed Array

真的是讓我眼花撩亂

因此我的疑問產生了

1.在VC++ .NET中 以上的陣列宣告法,都可以使用嗎?

2.在C#中還分有arraylist 和 list<T>,這也可以使用???

我只是想宣告個二維陣列來放東西阿!!

但,我這樣看 我不清楚該用哪個>"<

我覺得在WinForm中 可以使用的陣列宣告,以下這個應該是正確的吧!!
CLR 陣列的宣告
http://msdn.microsoft.com/zh-tw/library/ms235236(VS.80).aspx

請各位指點迷津,腦筋混亂中!!


作者 : x2163126(吃冬瓜補西瓜)
[ 貼文 38 | 人氣 0 | 評價 20 | 評價/貼文 0.53 | 送出評價 7 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2011/11/11 下午 05:16:07
找到這篇文章
http://www.codeproject.com/KB/mcpp/cppcliarrays.aspx

arrary of arrary 是代表陣列中的陣列 =2維陣列???

ref class R//class這邊 前面要有 ref????
{
public:
  void Test()
  {
    array<array<int>^>^ arr = gcnew array<array<int>^> (5); //這一段 我有疑惑,二維陣列這樣宣告??

    for(int i=0, j=10; i<5; i++, j+=10)
    {
     arr[i] = gcnew array<int> (j);
    }

    Console::WriteLine("Rank = {0}; Length = {1}",
     arr->Rank,arr->Length);
    /*
     Output :-
     Rank = 1; Length = 5
    */

    for(int i=0; i<5; i++)
     Console::WriteLine("Rank = {0}; Length = {1}",
     arr[i]->Rank,arr[i]->Length);
    /*
     Output :-
     Rank = 1; Length = 10
     Rank = 1; Length = 20
     Rank = 1; Length = 30
     Rank = 1; Length = 40
     Rank = 1; Length = 50
    */
  }
};
作者 : chiuinan2(青衫)討論區板主 Visual C++ .NET卓越專家VC++一代宗師Visual Basic優秀好手資訊類作業求救卓越專家一般曠世奇才程式設計甘苦談優秀好手C++ Builder優秀好手上班族的哈拉園地優秀好手C++頂尖高手Assembly優秀好手貼文超過3000則人氣指數超過150000點
[ 貼文 3732 | 人氣 170106 | 評價 34520 | 評價/貼文 9.25 | 送出評價 125 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人x2163126註記此篇回應為最佳解答 2011/11/11 下午 06:02:30
1. VC.NET仍可以用傳統的unmanaged code:

int* my_array = new int[10];
delete[] my_array;

2. VC.NET專用的clr陣列寫法 (指定形態的固定大小一維陣列):

array<String^>^ my_array = gcnew array<String^>(2);
my_array[0] = "test";
my_array[1] = "test2";
String^ value1 = my_array[0];
String^ value2 = my_array[1];

3. C#的也可以用, 只是寫法略為不同.

(1) ArrayList: 可儲存任何物件的不定大小一維陣列 (using namespace System::Collections)

ArrayList my_array;
my_array.Add("test");
my_array.Add(1);
String^ value1 = my_array[0]->ToString();
int value2 = (int)my_array[1];

(2) List<T>: 可儲存指定資料型態的不定大小一維陣列 (using namespace System::Collections::Generic)

List<String^> my_array;
my_array.Add("test");
my_array.Add("test2");
String^ value1 = my_array[0];
String^ value2 = my_array[1];

二維陣列的話:

1. 可以用傳統的unmanaged code寫法:

int my_array[10][20];

或是動態記憶體法(比較麻煩).

2. 可以用List包ArrayList來達到2維陣列 (ArrayList包ArrayList也行, 但存取資料時的寫法比較麻煩些).

List<ArrayList^> my_2d_array;
ArrayList^ array1 = gcnew ArrayList();
my_2d_array.Add(array1);
array1->Add("test");
ArrayList^ array2 = gcnew ArrayList();
my_2d_array.Add(array2);
array2->Add("test2");
String^ value1 = my_2d_array[0][0]->ToString();
String^ value2 = my_2d_array[1][0]->ToString();
作者 : chiuinan2(青衫)討論區板主 Visual C++ .NET卓越專家VC++一代宗師Visual Basic優秀好手資訊類作業求救卓越專家一般曠世奇才程式設計甘苦談優秀好手C++ Builder優秀好手上班族的哈拉園地優秀好手C++頂尖高手Assembly優秀好手貼文超過3000則人氣指數超過150000點
[ 貼文 3732 | 人氣 170106 | 評價 34520 | 評價/貼文 9.25 | 送出評價 125 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人x2163126註記此篇回應為最佳解答 2011/11/11 下午 06:14:06
>ref class R//class這邊 前面要有 ref????

這是managed class的寫法. 前面不加ref或value的, 稱為unmanaged class (就是傳統的寫法). unmanaged class必須用new, 結束後必須自行delete, 否則會有memory leak. managed class則用gcnew, 結束後沒有delete也不會有memory leak (系統會自動garbage collection).

> array<array<int>^>^ arr = gcnew array<array<int>^> (5); //這一段 我有疑惑,二維陣列這樣宣告??

這樣的寫法是宣告一個有5個空間的一維陣列, 每個空間存放的為"整數陣列". 你還必須分別建立出5個一維陣列做為內容陣.

不過array<T>的維度是固定的 (雖然可以resize), 個人比較喜歡用List<T>, 尤其是ArrayList, 雖然速度較慢, 但彈性較大.
作者 : chiuinan2(青衫)討論區板主 Visual C++ .NET卓越專家VC++一代宗師Visual Basic優秀好手資訊類作業求救卓越專家一般曠世奇才程式設計甘苦談優秀好手C++ Builder優秀好手上班族的哈拉園地優秀好手C++頂尖高手Assembly優秀好手貼文超過3000則人氣指數超過150000點
[ 貼文 3732 | 人氣 170106 | 評價 34520 | 評價/貼文 9.25 | 送出評價 125 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人x2163126註記此篇回應為最佳解答 2011/11/11 下午 06:27:47
另外建議樓主也可看看這篇:

http://www.programmer-club.com.tw/pc2020v5/forum/showsametitleN.asp?board_pc2020=vc&id=39691
作者 : x2163126(吃冬瓜補西瓜)
[ 貼文 38 | 人氣 0 | 評價 20 | 評價/貼文 0.53 | 送出評價 7 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2011/11/12 下午 12:19:37
原來如此...這樣我自從用VC.NET的疑惑終於有答案了

我一直以為我到了新環境 以前學的C++就不能用了

獲益良多,繼續研究!!
 板主 : 徵求中
 > Visual C++ .NET - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - Visual C++ .NET - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
Visual C++ .NET
1 青衫 2220 
2 Raymond 1500 
3 joe 520 
4 冷眼 350 
5 CodeWarrior 260 
6 marlon 230 
7 小朱 210 
8 windblown 200 
9 XWLin 120 
10 小約翰 120 
Visual C++ .NET
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2018 程式設計俱樂部 http://www.programmer-club.com.tw/
0.046875