C++ .Net クラス ライブラリを呼び出す C# .Net コンソール アプリケーションがあります。ただし、次のアプリケーションを実行すると、リストが空になります!!!
横のコメントに示されているように行を削除すると、コードは機能します。この理由がわかりません。
以下でやろうとしているように、C++ クラス ライブラリの list のメモリを再割り当てしたい場合、正しい方法は何ですか?
C#2005 コンソール アプリケーション
class Caller
{
static void Main(string[] args)
{
Callee callee = new Callee();
List<String> s = new List<String>();
callee.DoSomething(s);
Console.WriteLine(s.Count); // Prints out 0
}
}
C++2005 クラス ライブラリ
public ref class Callee
{
public:
void DoSomething(List<String^>^ list);
};
void Callee::DoSomething(List<String^>^ list)
{
list = gcnew List<String^>(); // Remove this line and it works
list->Add(gcnew String("Test String 1"));
list->Add(gcnew String("Test String 2"));
}