- 值类型。
- 参考类型。
- 指针类型。
值类型
C# 值类型派生自 System.ValueType 类,您可以直接将特定值分配给值类型变量。当声明值类型变量时,系统会自动分配内存空间来存储变量的值,但请注意,变量占用的内存量根据您的系统而有所不同。
C# 有多种值类型,如下表所示。
| 类型 | 解释 | 范围 | 默认 |
|---|---|---|---|
| bool | 布尔值 | 对或错 | False |
| byte | 8 位无符号整数 | 0-255 | 0 |
| char | 16 位 Unicode 字符 | U+0000 ~ U+ffff | ‘\0’ |
| decimal | 128 位精确十进制值,有效数字为 28 至 29 位 | (-7.9×10 28 ~ 7.9×10 28 ) / 10 0 ~ 28 | 0.0M |
| double | 64位双精度浮点 | (+/-)5.0 x 10 -324 ~ (+/-)1.7 x 10 308 | 0.0D |
| float | 32位单精度浮点 | -3.4×10 38至 +3.4×10 38 | 0.0F |
| int | 32 位有符号整数类型 | -2,147,483,648 至 2,147,483,647 | 0 |
| long | 64 位有符号整数类型 | -9,223,372,036,854,775,808 至 9,223,372,036,854,775,807 | 0L |
| sbyte | 8 位有符号整数类型 | -128~127 | 0 |
| short | 16 位有符号整数类型 | -32,768 至 32,767 | 0 |
| uint | 32 位无符号整数类型 | 0 至 4,294,967,295 | 0 |
| ulong | 64 位无符号整数类型 | 0 至 18,446,744,073,709,551,615 | 0 |
| ushort | 16 位无符号整数类型 | 0~65,535 | 0 |
如果要获取类型或变量的确切大小,可以使用 sizeof 方法。示例代码如下。
using System;
namespace it-kiso.com{
class Program {
static void Main(string[] args) {
Console.WriteLine("int型のサイズは: {0}", sizeof(int));
Console.ReadLine();
}
}
} 编译并运行上面的代码,结果为:
int 型のサイズは: 4
参考类型
引用类型变量不存储实际的数据值,而是存储对数据(对象)的引用,即数据在内存中的位置。如果多个变量引用同一个内存地址,如果任何一个变量改变了内存中数据的值,则引用该内存地址的所有变量的值都会改变。 C# 中的内置引用类型包括 Object、Dynamic 和 string。
1)对象类型(对象)
对象类型是 C# 通用类型系统 (CTS) 中所有数据类型的最终基类,Object 是 System.Object 类的别名。对象类型可以被赋予任何类型的值,但是在赋值之前需要进行类型转换。
将值类型转换为对象类型的过程称为“装箱”,将对象类型转换为值类型的过程称为“拆箱”。请注意,只有装箱数据才能取消装箱。
2) 动态型
动态类型变量可以存储任何类型的值,并且在程序执行期间检查它们的类型。动态类型的声明语法为:
dynamic <variable_name> = value;
例如:
dynamic d = 20;
动态类型与对象类型类似,但对象类型变量在编译时进行类型检查,而动态类型变量在程序运行时进行类型检查。
3)字符串类型(String)
字符串类型变量允许您将字符串分配给该变量。字符串类型必须通过 String 类创建。 String类是System.String类的别名,它派生自Object(对象)类型。 。 C#中有两种定义字符串类型的方法,分别使用" "和@" " 。
示例代码如下。
String str = “https://it-kiso.com/”;
@”https://it-kiso.com/”;
以@" "形式声明的字符串称为“逐字字符串”,逐字字符串将转义字符\视为普通字符。例如, string str = @"C:\Windows";相当于: string str = "C:\\Windows";
此外,可以在以@" "形式声明的字符串中任意使用换行符,并且换行符和缩进空格也计入字符串的长度。

C# 语言中的指针是一个变量,也称为定位器或指示符,可以存储另一种类型的内存地址。 C# 中的指针与 C 或 C++ 中的指针具有相同的功能。
指针类型的声明语法为:
type* identifier;
例如:
char* cptr;
int* iptr;
这里对指针的简单理解就足够了。这将在后面的章节中详细解释。




![2021 年如何设置 Raspberry Pi Web 服务器 [指南]](https://i0.wp.com/pcmanabu.com/wp-content/uploads/2019/10/web-server-02-309x198.png?w=1200&resize=1200,0&ssl=1)

