Как я могу создать многотипную матрицу? - PullRequest
2 голосов
/ 27 декабря 2011

У меня есть эти данные:

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

и я хотел бы сохранить эти данные в матрице с несколькими типами myMatrix (Первое поле - целое число, остальные - строки).

Итак, если я наберу myMatrix [1] [2], я должен получить paolo. Как я могу сделать это на C #?

Ответы [ 5 ]

4 голосов
/ 27 декабря 2011
Tuple<int, string, string, string>[]
object[][]
Dictionary<int, string[]>
4 голосов
/ 27 декабря 2011

Вы не можете использовать массивы для хранения различных типов объектов, которые не являются частью одной и той же цепочки наследования.

и object[][] будут работать, но у вас не будет безопасности типа и вам нужно будет привести к целевому типу.

Вы можете использовать Tuple<int,string,string,string>[] (введено в .NET 4.0), хотя ваш собственный простой тип будет более читабельным вариантом.

Вместо использования массивов вы можете использовать один из типов коллекций - например, List<T>, где универсальный тип - это кортеж или ваш пользовательский тип.

Вам действительно нужно подумать о использовании , в который эта коллекция будет помещена, прежде чем вы сможете выбрать подходящую структуру данных.

2 голосов
/ 27 декабря 2011

Dictionary<int, string[]> это самый простой способ, как я думаю.Подробнее о Dictionary типе можно найти здесь

2 голосов
/ 27 декабря 2011

Лучший способ - создать класс, представляющий ваши данные, с 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 (также назовите ваши параметры значимыми именами).

2 голосов
/ 27 декабря 2011

Вы можете использовать Dictionary<int, string[]>, чтобы получить такой эффект:

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


//get

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