标量类型

下表展示了 Rust 中的原生类型(primitive types)和它们在 C# 和 .NET 中的等价物:

RustC#.NET备注
boolboolBoolean
charcharChar参见备注 1.
i8sbyteSByte
i16shortInt16
i32intInt32
i64longInt64
i128Int128
isizenintIntPtr
u8byteByte
u16ushortUInt16
u32uintUInt32
u64ulongUInt64
u128UInt128
usizenuintUIntPtr
f32floatSingle
f64doubleDouble
decimalDecimal
()voidVoidValueTuple参见备注 2 & 3.
objectObject参见备注 3.

备注:

  1. Rust中的 char 和 .NET 中的 Char 的定义不同。在Rust中,char 是一个四字节宽的Unicode 标量值,但是在.NET中,Char 是两字节宽的,它保存的该字符的UTF-16编码。更多信息参见Rust char 文档
  2. 尽管 unit 类型()(一个空元组)在Rust中是 可表达值(expressible value),C# 中最接近它的是表示“无”的 void。然而,仅当使用指针和 unsafe 代码时,void 才是 可表达值。.NET 中的 ValueTuple 是一个空元组,但是C#并没有像是 () 这种表示它的字面量语法。C# 中可以使用 ValueTuple,但这是很罕见的做法。不过,不同于 C# ,F# 拥有像 Rust 一样的 unit 类型
  3. 尽管 voidobject 不是标量类型(甚至在 .NET 类型系统中 int 这种标量也是 object 的子类),方便起见它们也被列入上表中。

另见: