C # Общая коллекция справки - PullRequest
0 голосов
/ 16 мая 2010

У меня есть требование для реализации какого-либо объекта словаря. Что-то вроде MyDict<K,V1, V2). Например, если у меня есть вопрос в качестве ключа (k), то правильный ответ - V1. V2 - выбранный пользователем ответ. Есть ли коллекция, которая бы удовлетворяла этому требованию в C #. Если я должен разработать свой собственный тип, какие интерфейсы я должен реализовать. ICollection и Ilist?

Ответы [ 3 ]

1 голос
/ 16 мая 2010

Если вы используете .NET 4, вы можете использовать несколько общих Tuple классов.

Итак, вы можете использовать:

Dictionary<T,Tuple<V1,V2>>

В более ранних версиях вы могли использовать KeyValuePair<T1,T2> в качестве второго универсального типа:

Dictionary<T,KeyValuePair<V1,V2>>
1 голос
/ 16 мая 2010

Классы коллекции определены как часть пространства имен System.Collections или System.Collections.Generic.

Общий словарь класса

что-то вроде:

        Dictionary<Question,Answer> qDict = new Dictionary<Question, Answer>();

        Answer attempt_v2 = new Answer();
        Question question = new Question();
        if (qDict.ContainsKey(question))
        {
            Answer actual_answerv1 = qDict[question];

            if (actual_answerv1 == attempt_v2)
            {
                // Answers match
            }
        }

[Примечание: я только что выбил это. Возможно, это не лучшее решение проблемы совмещения вопросов и ответов ...]

0 голосов
/ 16 мая 2010

Я думаю, что нужна новая реализация.

ИЛИ, если ваш ответ имеет свойство Selected, вы можете создать.

Dictionary<Question, IList<Answer>>

или вы можете иметь тип с

class Answers {
    Ilist Answers;
    Answer Selected;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...