如何创建多类型矩阵?

时间:2011-12-27 14:08:09

标签: c# arrays matrix

我有这些数据:

4  pippo pluto paperino
10 marco paolo roberto
2  hello cruel world

我希望将这些数据存储到多类型矩阵myMatrix中。 (第一个字段是整数,其余字符串是字符串。)

所以,如果我输入myMatrix [1] [2],我必须得到paolo。我怎么能在C#上做到?

5 个答案:

答案 0 :(得分:4)

您不能使用数组来存储不属于同一继承链的不同类型的对象。

object[][]可以使用,但你不会有类型安全,需要转换为目标类型。

您可以使用Tuple<int,string,string,string>[](在.NET 4.0中引入),但您自己的简单类型将是更易读的选项。

您可以使用其中一种集合类型,而不是使用数组,例如List<T>,其中泛型类型是元组或您的自定义类型。

在选择合适的数据结构之前,您确实需要考虑用法这个集合。

答案 1 :(得分:4)

Tuple<int, string, string, string>[]
object[][]
Dictionary<int, string[]>

答案 2 :(得分:2)

您可以使用Dictionary<int, string[]>来获得此效果:

Dictionary<int, string[]> myMatrix = new Dictionary<int, string[]>();
myMatrix.Add(4, new[] { "pippo", "pluto", "paperino" });
...


//get

myMatrix[4][1] == "pluto"

答案 3 :(得分:2)

最好的方法是创建一个表示数据的类,包含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(也可以使用有意义的名称命名参数)。

答案 4 :(得分:2)

Dictionary<int, string[]>是我认为最简单的方法。

有关Dictionary类型的更多信息,请访问here