2011-07-17 116 views
8

我想創建一個二維數組,而不知道第一維的大小。如何創建2維動態長度數組?

例如,當我創建一個數組時,我有未知數量的行。 每一行代表一個帳戶。 退出4列,每列:ID,姓名,用戶名,密碼

我試着用鋸齒狀排列,但它是不可能有:

int[][] jaggedArray = new int[][3]; 

而且我看了ArrayList,實施與clases和一點關於泛型。

我在尋找一個解決方案,可以使數據的簡單的操作:使用數據庫元素

  • 添加到列表中選擇,輸入要素
  • 使用在其他參數的查詢
  • 功能

因爲我在.NET新手(C#),請爲我提供代碼解決方案,而不是一般的(尋找)解決方案

回答

2

.NET中沒有動態長度的數組。改爲使用List<>

當你實例化一個數組時,所有的數組邊界都需要知道。可能會讓你困惑的是,對於鋸齒狀數組,這看起來有點不同,但它不是:因爲它是一個數組數組,所以當你實例化它時,它將是一個沒有實際意義的數組(例如null引用)。然後您需要再次分配每個數組以使用它們。

17

IMO,因爲 「列」 是固定的,聲明一個類爲:

public class Account 
{ 
    public int ID {get;set;} 
    public string Name {get;set;} 
    public string User {get;set;} 
    public string Password {get;set;} // you meant salted hash, right? ;p 
} 

現在有一個:

List<Account> list = new List<Account>(); 

這有你需要的一切:

添加到列表中,選擇,輸入元素

list.Add

使用數據庫中的元素的查詢 在其他功能上

模糊沒有更多的信息使用的參數,但是你可以通過其中的Account或invidual值,或整個列表。

+0

謝謝。我還有一個問題:如何恢復特定列表項的類成員值? – user848568

+2

@user你的意思是像'list [0] .Name'? –

+0

我的情況有一點不同。行和列都是未知的。我怎樣才能達到「二維陣列」的相同結果? – barnes

0

只要我知道,我們不能在不知道它的大小的情況下實例化數組。你爲什麼不嘗試一個列表數組?像這樣:

List<int>[] a = new List<int>[yourDesireColumnNumber]; 

通過List,添加,選擇,輸入元素是微不足道的。如果你想把它作爲其他函數的參數,只需定義Type。

+0

你是不是指固定int數組的列表,而不是int列表的固定數組列表? –

+3

@Scrum是正確的 - 如果你選擇了這種方法(我不會; p)它將是一個'List ',而不是'List []' –

+0

你應該在判斷它之前嘗試它。這是一個列表數組。順便說一句,馬克的方法是偉大的。 ;)我從中學習。 –