2015-09-09 44 views
0

我必須聲明如下:如何在c#中聲明int表的列表?

IList<int[]> populacja = new List<int[]>(); 

,但我還想申報表INT的恆定大小。所以我想要這樣的東西

IList<int[2]> populacja = new List<int[2]>(); 

如何做到這一點?什麼是一個很好的解決方案,使int表的列表?

+0

只是做int [] populacja = new int [2]; – XtremeBytes

+0

根據您的需要,您也可以將它製作爲IList > – moarboilerplate

+0

@elgonzo但它將第一個列表限制爲兩個元素。我想用恆定長度表製作動態列表。 – ElConrado

回答

5

如果確保populacja始終爲int [2],那麼您可以將其包裝在一個類中,然後製作該類的列表。內置選項包括Tuple,例如:

IList<Tuple<int,int>> populacja = new List<Tuple<int,int>>(); 
+0

populacja總是有int [2]類型的元素,但是它限制了元組的功能。當我想要int [1243]時,我該怎麼做? – ElConrado

+0

你是說你可能想要而不是int [2]和int [1243]?我會建議在那一點上,你創建一個類是一個包裝到一個int [1243]並使用它來代替Tuple。 – GWLlosa

+0

如果你發現自己需要大量不同大小的東西,那麼我建議你不要一個列表,而是一個很好的老式int [] []。列表意味着x是某種第一類對象,通常映射到某個實體。許多任意長度的數組有點感覺像是它違反OOP原則,儘管我不能確定它是不是我的問題域。 – GWLlosa

1

只是一個供參考。

你不能在IList中聲明int [2]的原因是因爲它期待一個類型。在這種情況下,該類型是int(int [])的數組。 T不關心長度或類似的東西。如果你確實想用INT []你需要做這樣的事情 -

 IList<int[]> populacja = new List<int[]>(); 
     populacja.Add(new int[2]); // empty int array of size 2 
     populacja.Add(new [] { 3211,3212 }); // non-empty int array of size 2 

每次添加int類型的新數組,你需要用,因爲有一個大小爲2明確實例它沒有限制。

+0

但在您的解決方案中,我可以添加到populacja new int [4]。我對嗎?我想讓大小不變。 – ElConrado

+0

正確,你需要自己創建約束。 populacja是數組列表,列表不知道每個數組的大小。你有責任制定一個約束。最好的方法是將populacja包裝在自己的類中,並創建一個強制int [2]約束的Add方法。 – Tom

+0

GWLlosa的解決方案很好,但我不知道有效的情況下是否有更好的方法。 – ElConrado