系统:Uint32^in C++/CLI编译为C#中的VaueType?
在C++/CLI类库中,我具有以下功能:系统:Uint32^in C++/CLI编译为C#中的VaueType?,c#,c++-cli,managed,C#,C++ Cli,Managed,在C++/CLI类库中,我具有以下功能: static System::UInt32^ Fn() { return gcnew System::UInt32(0); } 在C#中使用类库时,System::Uint32是System::ValueType,编译器错误: 错误1无法将类型“System.ValueType”隐式转换为“uint”。 存在显式转换(是否缺少强制转换?) 为什么当我在C++/CLI中定义System::UInt32时,我在C#中得到一个ValueType 谢谢
static System::UInt32^ Fn()
{
return gcnew System::UInt32(0);
}
在C#中使用类库时,System::Uint32是System::ValueType,编译器错误:
错误1无法将类型“System.ValueType”隐式转换为“uint”。
存在显式转换(是否缺少强制转换?)
为什么当我在C++/CLI中定义System::UInt32时,我在C#中得到一个ValueType
谢谢
UInt32
是一种值类型(struct
在C#)中,而不是引用类型。因此,它不需要^
句柄
将该方法切换到以下方法,它将正常显示在C#中
如果您将其余代码转换为从值类型中删除
^
,您会发现您的C++/CLI代码看起来更自然,并且与.Net库接口的问题也会更少。您可以演示如何在C#中使用函数吗?System::UInt32
不是引用类型,因此,我会抛弃^
和gcnew
.C#不支持强类型的装箱值,它将它们全部显示为ValueType
。我很惊讶它没有显示为对象
,这是装箱类型C#唯一支持的。从对象
取消装箱很容易,但是如何从值类型
取消装箱呢?
static System::UInt32 Fn()
{
return 0;
}