c# - 内置整型值类型的位宽是固定的吗?

标签 c# primitive-types

我正在寻找一个明确的信息,是否是(原始)整数类型的位宽度(例如byteshortintlong 等)在 C# 中(从而映射到 CLI 固定宽度类型,例如 ByteInt16 , Int32, Int64, ...) 是固定的(永远),或者将来可能会改变(语言修订),我们可能会遇到类似的情况,如 C/C++ ,其中内置类型至少 N 位宽

动机是:我们可以安全地使用 C#.int 作为使用 32 位值的整数类型,还是直接使用 CLI 更好.Int32 对于我们想要正好 32 位的情况?

最佳答案

The motivation is: could we safely use C#.int as the integral type using 32 bits for its value, or is it better to just use CLI.Int32 for the cases we want exactly 32 bits?

从技术上讲,它们是相同的。

int 等于 Int32

为什么我们可以用两个不同的名称来表示同一个类型?我们的想法是,原始类型可能是最常用的,因此 C# 团队为这些类型创建了别名,以便更快地编写代码。

基于上述,声明int n相当于Int32 n = new Int32()

另请注意,C# 功能只是 CLI 功能的子集。这意味着 CLI 中可能存在 C# 中未实现的类型,反之亦然。例如,在 CLI 中没有 UInt32(无符号整数),但在 C# 中却有。

基于上述,如果新类型在 CLI 或 C# 中实现,并不意味着它会以相反的方式实现。另外,我不相信有人会更改现有类型的实现,因为这会破坏兼容性。

关于c# - 内置整型值类型的位宽是固定的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32909455/

相关文章:

c# - 不使用类的 JSON 反序列化? (网络服务客户端)

java - 使用 Java 中的基本类型创建具有内部矩阵表示的 Matrix 泛型类

Java 反射 .getMethod int 与 Integer

java - 如何成对存储 int 和 boolean

c# - 将控件绑定(bind)到对象是否算作订阅?

c# - 基于最小值或最大值的数据网格值转换器

c# - WPF:图像上未显示添加的行

C# Moq - 模拟 Action<T> 参数

java - Java long 的 C++ 变体?

c++ - uintmax_t 不处理 128 位