我有這些數據:如何創建多類型矩陣?
4 pippo pluto paperino
10 marco paolo roberto
2 hello cruel world
和我想這些數據存儲到一個多類型矩陣myMatrix
。 (第一個字段是一個整數,其餘的是字符串)。
所以,如果我輸入myMatrix [1] [2]我必須得到paolo
。我如何在C#上做到這一點?
我有這些數據:如何創建多類型矩陣?
4 pippo pluto paperino
10 marco paolo roberto
2 hello cruel world
和我想這些數據存儲到一個多類型矩陣myMatrix
。 (第一個字段是一個整數,其餘的是字符串)。
所以,如果我輸入myMatrix [1] [2]我必須得到paolo
。我如何在C#上做到這一點?
的最好方法是創建一個代表你的數據的類,有4個字段(整數,字符串,字符串,字符串)。
public class MyClass
{
public int Param1 { get; set; }
public string Param2 { get; set; }
public string Param3 { get; set; }
public string Param4 { get; set; }
}
然後只需使用List<MyClass>
來存儲您的數據。 要獲得Paolo,您需要使用List[1].Param2
(也可以使用有意義的名稱命名參數)。
您不能使用數組來存儲不屬於同一繼承鏈的不同類型的對象。
an object[][]
會起作用,但您不會有類型安全性並需要轉換爲目標類型。
你可以使用Tuple<int,string,string,string>[]
(在.NET 4.0中引入),儘管你自己的簡單類型是一個更易讀的選項。
除了使用數組,您可以使用其中一種集合類型 - 例如List<T>
,其中泛型類型是元組或自定義類型。
你真的需要考慮的用法這個集合將被放入之前,你可以選擇一個合適的數據結構。
您可以使用Dictionary<int, string[]>
獲得這樣的效果:
Dictionary<int, string[]> myMatrix = new Dictionary<int, string[]>();
myMatrix.Add(4, new[] { "pippo", "pluto", "paperino" });
...
//get
myMatrix[4][1] == "pluto"
Tuple<int, string, string, string>[]
object[][]
Dictionary<int, string[]>
Dictionary<int, string[]>
是我想的最簡單的方法。
更多Dictionary
類型可以發現here
+1元組,我不知道人們爲什麼不採用它,它是如此的少得多的代碼,它是工廠模式處於最佳狀態。 – 2011-12-27 14:35:28
@SurjitSamra - 人們或者不知道它,或者不想使用它,因爲它具有非常弱的語義。就個人而言,我只會在一種方法中使用它,而不是作爲API的一部分。 – Oded 2011-12-27 14:38:43