Перегрузка оператора "=" в List с ассоциативным массивом как одним элементом с использованием C ++ / CLI - PullRequest
0 голосов
/ 01 мая 2011

Любой из вас, пожалуйста, посоветуете мне как перегрузить список с ассоциативным массивом в нем, используя оператор "=".C ++ / CLI - это язык, который я использую.

Я не хочу достичь чего-то подобного.

`myList[0]["Key"] = "1";`

где myList System::Collections::Generic::List<AssociativeArray<String^> ^> ^myList

Может кто-нибудь из вас, пожалуйстадайте мне несколько подсказок для этого.

Заранее спасибо,
Питер К. Джон

1 Ответ

3 голосов
/ 01 мая 2011

Почему бы вам просто не использовать List<Dictionary<String^, String^>^>^?

Этот синтаксис уже поддерживается.

Если, однако, Dictionary не удовлетворяет вашим потребностям (например, вы хотите использовать trieструктура вместо хеш-таблицы), реализация индексатора будет выглядеть примерно так:

generic<typename T>
ref class AssociativeArray
{
    // implementation details
    // ...

public:
    property T default[String^]
    {
        T get(String^ key)
        {
            T result;
            if (!TryGetValue(key, result)) throw gcnew KeyNotFoundException(key);
            return result;
        }

        void set(String^ key, T val)
        {
            SetValue(key, val);
        }
    }
};
...