2013-03-07 93 views

回答

2

C++/CLI原语类型具有双重身份。根据上下文,类型关键字匹配均为本机C++类型和CLR类型。具有本机类型变量的变量会继承CLR类型上可用的方法,如ToString

我想这个博客的文章,解释本机和托管类型之间的关系是非常有益的:http://blogs.msdn.com/b/branbray/archive/2005/07/20/441099.aspx

+0

但我很困惑。如果/ clr编译器打开。我可以定义int number = 100,并且调用编号.ToString(),因为它是System :: Int32。如果/ clr开关关闭,则编号不能是System :: Int32。所以,在/ clr开启和关闭的情况下,编译器会以不同的方式处理int类型? – Ryan 2013-03-07 07:13:48

+1

@Ryan:如果你不使用'/ clr',那么你没有使用C++/CLI,我的答案不适用。 – 2013-03-07 12:40:15

-1

它们是一样的东西,继续前进,并使用int任何地方你想要的本地类型。

1

我想接受的答案没有回答任择议定书的问题。

如果/clr编译开关打开,那么int关键字意味着System::Int32,它不是本地的。
如果/clr编译开关关闭,那么int关键字意味着本机C/C++ int,它不受管理。

使用System::Int32意味着在显著的性能损失本土int(你可以测量)。

您可以根据.cpp文件关闭/clr编译器开关。它不是项目选项,它是一个翻译单元(.cpp文件)选项。
右键单击该文件,然后属性,等等

所以,你可以写在一个.cpp文件(/clr关闭编译)一些本地代码。
然后,您可以在另一个文件中编写托管代码(使用/clr编译)并调用本机代码。

相关问题