2012-07-08 65 views
3

我已經定義了一個名爲Hotspot的新類類型。我需要2個熱點陣列(我使用List)和第三個讓我在它們之間「切換」的陣列。這裏我的代碼:自定義類型數組的陣列

List<Hotspot> items = new List<Hotspot>(); 
List<Hotspot> locations = new List<Hotspot>(); 

Hotspot[][] arrays = new Hotspot[][]{items, locations}; 

arrays不起作用。我只需要它,所以我可以輕鬆訪問items/locations陣列。

在F#我做到了這樣:

let mutable items = new ResizeArray<Hotspot>() 
let mutable locations = new ResizeArray<Hotspot>() 

let arrays = [|items; locations|] 

但我不能做同樣的事情在C#。一些幫助?

+2

它不起作用,因爲列表與熱點不相同。換句話說,你聲明'數組'是一個二維熱點陣列,但你可以用兩個列表來填充它。通過靜態打字,這不可能發生。 – 2012-07-08 21:20:58

回答

4
List<Hotspot>[] arrays = new List<Hotspot>[]{items, locations}; 
3

itemslocations聲明(和初始化)的名單。列表不是數組,而是試圖將它們分配爲數組。將它們轉換爲數組或根本不使用數組,而是使用數組。

Hotspot[][] arrays = new Hotspot[][]{ items.ToArray(), locations.ToArray() }; 
//or 
List<Hotspot>[] lists = new[] { items, locations }; 

P.S.,該F#ResizeArray<T>基本上是一個別名到.NET List<T>。所以實際上,在我上面的示例中,F#示例中的arrays變量等於lists,您創建了一個列表數組。

+0

後者在我看來更清潔。 – 2012-07-08 21:30:30

+0

它不起作用,也嘗試了第二個。 – 2012-07-08 21:46:51

+0

我不知道爲什麼「陣列」聲明的位置有問題。在Form_Load()內完成並且工作。對我來說沒有意義... – 2012-07-08 21:52:00