我有这些数据:如何创建多类型矩阵?
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