C#中使用非托管指针*
值针可以在带有unsafe的函数中正常使用。
必须在函数前,static关键字后加入unsafe关键字。如
static
unsafe void Main(string[] args)
{}
在项目属性中,选中Allow unsafe code复选框。
C#中使用托管跟踪句柄^
跟踪句柄可以直接赋值到C#对象中。
如
如果使用
int
handle = CalRef.GetHandle();
会出现编译错误:Cannot implicitly convert type 'System.ValueType' to 'int'
这是因为CalRef是使用C++/CLI写的。C++/CLI的int类型是iso-C++的类型,而不是System命名空间下的类。而C#中没有那种ISO-C++类型,所有的整型都是System命名空间下的sealed类,即C#下int就是System::Int32。所以不能进行隐式类型转换。
此时必须进行强制类型转换:
Int32
dsfa = (Int32)(calref.GetHundle());
而在C++/CLI中就可以隐式类型转换。
在C++/CLI中定义:
public
ref
class
CalRef
...
...