Csharp 简明教程
C
C# 中的变量被归类为以下类型 −
-
Value types
-
Reference types
-
Pointer types
Value Type
值类型变量可以直接被赋值。它们来自类 * System.ValueType*。
值类型直接包含数据。一些示例是 int, char, and float ,它分别存储数字、字母和浮点数。当你声明一个 int 类型时,系统会分配内存来存储该值。
下表列出了 C# 2010 中可用的值类型 −
Type |
Represents |
Range |
Default Value |
bool |
Boolean value |
True or False |
False |
byte |
8-bit unsigned integer |
0 to 255 |
0 |
char |
16-bit Unicode character |
U +0000 到 U +ffff |
'\0' |
decimal |
28-29 位有效数字的 128 位精确十进制值 |
(-7.9 x 1028 到 7.9 x 1028) / 100 到 28 |
0.0M |
double |
64 位双精度浮点数类型 |
(/-)5.0 x 10-324 到 (/-)1.7 x 10308 |
0.0D |
float |
32 位单精度浮点数类型 |
-3.4 x 1038 到 + 3.4 x 1038 |
0.0F |
int |
32-bit signed integer type |
-2,147,483,648 to 2,147,483,647 |
0 |
long |
64-bit signed integer type |
-9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 |
0L |
sbyte |
8-bit signed integer type |
-128 to 127 |
0 |
short |
16-bit signed integer type |
-32,768 to 32,767 |
0 |
uint |
32-bit unsigned integer type |
0 to 4,294,967,295 |
0 |
ulong |
64-bit unsigned integer type |
0 to 18,446,744,073,709,551,615 |
0 |
ushort |
16-bit unsigned integer type |
0 to 65,535 |
0 |
要获取特定平台上某个类型或变量的确切大小,可以使用 sizeof 方法。表达式 sizeof(type) 会产生对象或类型在字节中的存储大小。以下是一个在任何机器上获取 int 类型大小的示例 −
using System;
namespace DataTypeApplication {
class Program {
static void Main(string[] args) {
Console.WriteLine("Size of int: {0}", sizeof(int));
Console.ReadLine();
}
}
}
编译并执行上述代码后,将产生以下结果 −
Size of int: 4
Reference Type
引用类型不包含存储在变量中的实际数据,但它们包含对变量的引用。
换句话说,它们引用一个内存位置。引用类型可以使用多个变量引用内存位置。如果内存位置中的数据被其中一个变量更改,则另一个变量会自动反映此值更改。 built-in 引用类型的示例包括: object 、 dynamic, 和 string 。
Object Type
Object Type 是 C# 公共类型系统 (CTS) 中所有数据类型的终极基类。对象是 System.Object 类的一个别名。对象类型可以被赋值任何其他类型、值类型、引用类型、预定义类型或用户定义类型的值。但是,在赋值之前,它需要类型转换。
当值类型转换为对象类型时,称为 boxing ,另一方面,当对象类型转换为值类型时,称为 unboxing 。
object obj;
obj = 100; // this is boxing