Создание KeyValuePair в Managed C ++ - PullRequest
       17

Создание KeyValuePair в Managed C ++

4 голосов
/ 05 декабря 2008

У меня есть еще один управляемый вопрос C ++ KeyValuePair, в котором я знаю, что делать в C #, но мне трудно переводить на управляемый C ++. Вот код, который делает то, что я хочу сделать в C #:

KeyValuePair<String, String> KVP = new KeyValuePair<string, string>("this", "that");

Я отразил это в MC ++ и получил это:

KeyValuePair<String __gc*, String __gc*> __gc* KVP = (S"this", S"that");

который я перевожу на:

KeyValuePair<String ^, String ^> KVP = (gcnew String("this"), gcnew String("that"));

Я знаю из моего предыдущего вопроса , что KeyValuePair является типом значения; проблема в том, что это тип значения в C ++ и ссылочный тип в C #? Может кто-нибудь сказать мне, как установить ключ и значение KeyValuePair из C ++?

Ответы [ 2 ]

3 голосов
/ 05 декабря 2008

Это должно сделать это:

KeyValuePair< String ^, String ^> k(gcnew String("Foo"), gcnew String("Bar"));

KeyValuePair является неизменяемым типом, поэтому вы должны передать все конструктору, который выглядит так же, как в C #, за исключением того, что вы пишете это так, если объект находится в стеке.

1 голос
/ 05 декабря 2008

1001 * попробовать *

System::Collections::Generic::KeyValuePair< System::String^, System::String^>^ k = gcnew System::Collections::Generic::KeyValuePair< System::String^, System::String^>(gcnew System::String("foo") ,gcnew System::String("bar"))   ;
...