Словарь C #, 2 значения - PullRequest
       11

Словарь C #, 2 значения

13 голосов
/ 19 апреля 2010

Какова будет лучшая структура данных C # для использования одного ключа и извлечения двух значений?

По сути мне нужна Dictionary<string, string, string>. Есть ли что-то подобное?

Ответы [ 6 ]

21 голосов
/ 19 апреля 2010

Если вы используете .NET 4, вы можете использовать

Dictionary<string, Tuple<string, string>>

Если нет, вы можете создать свой собственный тип Tuple, который работает так же:)

Кроме того, если вам нужно только это в одном месте, вы можете создать свой собственный тип, который аккуратно инкапсулирует две строки, используя соответствующие имена. Например:

public sealed class NameAndAddress
{
    private readonly string name;
    public string Name { get { return name; } }

    private readonly string address;
    public string Address { get { return address; } }

    public NameAndAddress(string name, string address)
    {
        this.name = name;
        this.address = address;
    }
}

Тогда вы можете использовать:

Dictionary<string, NameAndAddress>

, который очень ясно дает понять, что будет храниться.

Вы можете реализовать равенство и т.д., если хотите. Лично я хотел бы, чтобы подобные вещи стали проще - анонимные типы почти делают это, но тогда их нельзя назвать ...

6 голосов
/ 19 апреля 2010
class A {
  public string X, Y;
}

Dictionary<string, A> data;
3 голосов
/ 19 апреля 2010

Создайте структуру, содержащую ваши значения, а затем используйте

Dictionary<string, MyStruct> dict = new Dictionary<string, MyStruct>();
0 голосов
/ 19 апреля 2010

Создайте класс для хранения вашего значения и сделайте его словарём. Если класс используется только в контексте одного содержащего класса (например, он используется для доставки структуры данных для свойства класса), вы можете сделать свой класс закрытым вложенным классом.

0 голосов
/ 19 апреля 2010

Да, есть именно это . Вы можете хранить ваши два значения в классе или структуре. Или ты хочешь что-то еще?

0 голосов
/ 19 апреля 2010

Вы можете использовать словарь KeyValuePairs

Dictionary<string,KeyValuePair<string,string>>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...