本主题讨论 Java 和 C# 在数据的表示、分配和垃圾回收等方面的一些主要相同点和不同点。
C# 使您能够创建一个在对类的实例进行垃圾回收前调用的析构函数方法。在 Java 中,可以使用 finalize 方法来包含代码,用于在将对象作为垃圾回收前清理资源。在 C# 中,此功能由类析构函数执行。析构函数就像是没有参数和前面不带颚化符 (~) 的构造函数。
内置数据类型
| 简称 | .NET 类 | 类型 | 宽度 | 范围(位) |
|---|---|---|---|---|
| byte | 无符号整数 | 8 | 0 到 255 | |
| sbyte | 有符号整数 | 8 | -128 到 127 | |
| int | Int32 | 有符号整数 | 32 | -2,147,483,648 到 2,147,483,647 |
| uint | 无符号整数 | 32 | 0 到 4294967295 | |
| short | 有符号整数 | 16 | -32,768 到 32,767 | |
| ushort | 无符号整数 | 16 | 0 到 65535 | |
| long | 有符号整数 | 64 | -922337203685477508 到 922337203685477507 | |
| ulong | 无符号整数 | 64 | 0 到 18446744073709551615 | |
| float | 单精度浮点型 | 32 | -3.402823e38 至 3.402823e38 | |
| double | Double | 双精度浮点型 | 64 | -1.79769313486232e308 至 1.79769313486232e308 |
| char | 单 Unicode 字符 | 16 | 文本中使用的 Unicode 符号 | |
| bool | 逻辑布尔值类型 | 8 | True 或 False | |
| object | 所有其他类型的基类型 |
|
| |
| string | 字符序列 |
|
| |
| decimal | 精确小数类型或整型,可以表示带有 29 个有效位的十进制数 | 128 | ±1.0 × 10e−28 至 ±7.9 × 10e28 |
因为 C# 将所有基元数据类型当作对象表示,所以可以在基元数据类型上调用对象方法。例如:
int i = 10;
object o = i;
System.Console.WriteLine(o.ToString());
}
借助自动装箱和取消装箱完成此操作。有关更多信息,请参见装箱和取消装箱(C# 编程指南)。