我还有另一个托管的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的键和值?
答案 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")) ;