与C#相同,int是System :: Int32的别名,它是CLR类型。有没有办法可以使用原生的“int”,这意味着标准c ++中的int?
答案 0 :(得分:3)
C ++ / CLI原语类型具有双重身份。类型关键字匹配 本机C ++类型和CLR类型,具体取决于上下文。具有本机类型的变量将继承CLR类型上可用的方法,如ToString
。
我认为这篇博客文章解释了原生类型和托管类型之间的关系非常有用:http://blogs.msdn.com/b/branbray/archive/2005/07/20/441099.aspx
答案 1 :(得分:1)
我认为接受的答案没有回答OP的问题。
如果启用了/clr
编译器开关,则int
关键字表示System::Int32
,它不是原生的。
如果/clr
编译器开关关闭,则int
关键字表示本机C / C ++ int
,则不会对其进行管理。
使用System::Int32
意味着对原生int
造成重大的性能损失(您可以对其进行衡量)。
您可以关闭每个/clr
文件的.cpp
编译器开关。它不是Project选项,它是翻译单元(.cpp文件)选项
右键单击文件,然后单击属性等...
因此,您可以在.cpp
文件中编写一些本机代码(使用/clr
编译关闭)。
然后,您可以在另一个文件中编写托管代码(使用/clr
编译)并调用本机代码。
答案 2 :(得分:-1)
它们是相同的,继续使用int
到任何你想要的本机类型。