C++/CLI 和 C# 中的类型“long”有什么区别
本文关键字:long 区别 什么 类型 CLI C++ | 更新日期: 2023-09-27 18:20:28
在C++/CLI 项目中,我有方法void DoSomething(long x);
.如果我想在任何用 C# 编写的单元测试中使用它,方法参数x
显示为类型 int
。
为什么我必须将签名更改为void DoSomething(long long x);
才能在单元测试 (C#( 中将其与 long
类型的参数一起使用?
long
是C#和C++中的关键字。 它们的意思根本不相同。 C++/CLI 设计人员选择了C++解释,因为C++是目标互操作语言。
不完全是唯一不直观的映射:
- C# 字节 => C++/CLI 无符号字符
- C# sbyte => C++/CLI 字符
- C# 字符 => C++/CLI wchar_t
- C# ushort => C++/CLI 无符号短
- C# uint => C++/CLI unsigned int
- C# long => C++/CLI long long
- C# ulong => C++/CLI 无符号长
- C# 字符串 => 没有等效项,请使用 System::String^
- C# 十进制 => 没有等效项,使用 System::D ecimal
- C# 对象 => 没有等效项,请使用 System::Object^
- C# 枚举 => C++/CLI 公共枚举类
- C# 结构 => C++/CLI 值结构
- C# 类 => C++/CLI 引用类
- C# 接口 => C++/CLI 接口类
- C# 可为空的类型,其中 ? => 没有等效项,请使用可为空<>
当心枚举所需的public
关键字,这是自 C++11 采用enum class
语法以来的必要弊端。
只有 void、bool、short、int、float 和 double 关键字匹配。
在 C# 中,long
是 64 位数据类型。 在C++中,我们对long
的了解是,它必须容纳与int
一样多或更多的内容,并且至少为32位。 如果在 C++ 中使用保证至少为 64 位的long long
,这将与您在 C# 中拥有的位相匹配。