gpt4 book ai didi

c# - C++/CLI 和 C# 中的类型 "long"有什么区别?

转载 作者:行者123 更新时间:2023-12-05 08:16:33 31 4
gpt4 key购买 nike

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# char => C++/CLI wchar_t
  • C# ushort => C++/CLI unsigned short
  • C# uint => C++/CLI unsigned int
  • C# long => C++/CLI long long
  • C# ulong => C++/CLI unsigned long long
  • C# string => 没有等价物,使用 System::String^
  • C# decimal => 没有等效项,使用 System::Decimal
  • C# object => 没有等价物,使用 System::Object^
  • C# 枚举 => C++/CLI 公共(public)枚举类
  • C# 结构 => C++/CLI 值结构
  • C# 类 => C++/CLI 引用类
  • C# 接口(interface) => C++/CLI 接口(interface)类
  • 带有 ? 的 C# 可空类型=> 没有等价物,使用 Nullable<>

当心枚举所需的 public 关键字,自从 C++11 采用了 enum class 语法以来,这是一个必要的邪恶。

只有 void、bool、short、int、float 和 double 关键字匹配。

关于c# - C++/CLI 和 C# 中的类型 "long"有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33523478/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com