0

「=」演算子を使用して、連想配列を含むリストをオーバーロードする方法を教えてください。C++/CLI は、私が使用している言語です。

このようなことを達成したいです。

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

myList の場所 System::Collections::Generic::List<AssociativeArray<String^> ^> ^myList

どなたか、この手がかりを教えてください。

前もって感謝します、
ピーター・K・ジョン

4

1 に答える 1

3

なぜあなただ​​けを使用しないのですList<Dictionary<String^, String^>^>^か?

その構文はすでにサポートされています。

ただし、Dictionaryニーズを満たさない場合 (たとえば、ハッシュテーブルの代わりにトライ構造が必要な場合)、インデクサーの実装は次のようになります。

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);
        }
    }
};
于 2011-05-01T13:18:44.720 に答える