C#里面的
out
修饰,对应C++/CLI的
[OutAttribute] T %
初始代码
(C++/CLI):void XXX(IntPtr % handle);(C#):
IntPtr handle;
XXX(out handle);
一开始,因为没有[OutAttribute],导致C#调用C++/CLI的函数的时候,总是提示
错误 CS1502: 与“XXX(ref IntPtr)”最匹配的重载方法具有一些无效参数
错误 CS1620: 参数 2 必须使用关键字“ref”传递
因此,修改C#代码为
IntPtr handle;
XXX(ref handle);
则又提示
错误 CS0165: 使用了未赋值的局部变量“handle”
遂
IntPtr handle = IntPtr.Zero;
XXX(ref handle);
总算是编译通过了.但这个初始化操作总让我很恶心. 最后修改成 (C++/CLI):void XXX([OutAttribute] IntPtr % handle);(C#):
IntPtr handle;
XXX(out handle);