在托管C ++中创建KeyValuePair

时间:2008-12-05 15:44:47

标签: .net generics visual-c++ .net-2.0 managed-c++

我还有另一个托管的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"));

我从previous question知道KeyValuePair是一个值类型;问题是它是C ++中的值类型和C#中的引用类型?谁能告诉我如何从C ++设置KeyValuePair的键和值?

2 个答案:

答案 0 :(得分:3)

这应该这样做:

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

KeyValuePair是一个不可变类型,因此您必须将所有内容传递给构造函数,该构造函数看起来与C#中的相同,除非您将对象写在堆栈上,否则就像这样写。

答案 1 :(得分:1)

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"))   ;