在C++/CLI项目中我有方法void DoSomething(long x);
。如果我想在使用C#编写的任何单元测试中使用它,则方法参数x
显示为类型int
。在C++/CLI和C#中输入“long”有什么区别?
为什么我必须将签名更改为void DoSomething(long long x);
才能在我的单元测试(C#)中将它与参数类型long
一起使用?
在C++/CLI项目中我有方法void DoSomething(long x);
。如果我想在使用C#编写的任何单元测试中使用它,则方法参数x
显示为类型int
。在C++/CLI和C#中输入“long”有什么区别?
为什么我必须将签名更改为void DoSomething(long long x);
才能在我的单元测试(C#)中将它与参数类型long
一起使用?
在C#long
是一个64位数据类型。在C++中我们所知道的关于long
的是它必须保存多于或多于int
,并且它至少是32位。如果您在C++中使用long long
,并且保证至少有64位,这将与您在C#中的匹配。
long
是C#和C++中的关键字。他们根本不是指同一件事。由于C++是目标互操作语言,因此C++/CLI设计人员进行了C++解释。
不完全是唯一的非直观映射:
当心所需public
关键字用于枚举,由于C++ 11必要的恶通过的enum class
语法。
只有void,bool,short,int,float和double关键字匹配。
谢谢。你能提供一个链接到这些信息吗? –
不,这是原创作品,不能复制任何内容。您必须阅读整个语言规范才能找到返回的内容Emca-372。我们在这里创建引用,只是重新发布现有内容。 –
谢谢你的解释。是什么意思,如果我们编写其他组合,例如'long int x'? –
@ChristianSt。在C++中,'long'和'long int'没有区别。 “长”是写它的简写方式。 http://stackoverflow.com/questions/18971732/difference-between-long-long-long-long-int-and-long-long-int-in-c – NathanOliver