04-常用数据类型
C# 是一种强类型语言,数据类型在代码中扮演着至关重要的角色。不同的数据类型允许程序在内存中存储不同类型的值。以下是 C# 中一些常用的基本数据类型。
1. 值类型 (Value Types)
值类型存储在堆栈(Stack)中,变量直接包含值。C# 提供了多种预定义的值类型,如整数、浮点数、布尔值等。
数据类型 | 大小 | 范围或表示 | 默认值 | 说明 |
---|---|---|---|---|
int | 4 字节 | -2,147,483,648 ~ 2,147,483,647 | 0 | 32 位整数 |
long | 8 字节 | -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 | 0L | 64 位整数 |
short | 2 字节 | -32,768 ~ 32,767 | 0 | 16 位整数 |
sbyte | 1 字节 | -128 ~ 127 | 0 | 8 位无符号整数 |
uint | 4 字节 | 0 ~ 4,294,967,295 | 0 | 32 位整数 |
ulong | 8 字节 | 0 ~18,446,744,073,709,551,615 | 0 | 64 位整数 |
ushort | 2 字节 | 0 ~65,535 | 0 | 16 位整数 |
byte | 1 字节 | 0 ~ 255 | 0 | 8 位无符号整数 |
bool | 1 字节 | true 或 false | false | 布尔类型 |
char | 2 字节 | U+0000 ~ U+FFFF | \0 | 单个 Unicode 字符 |
float | 4 字节 | ±1.5e−45 ~ ±3.4e38 | 0.0f | 32 位浮点数 |
double | 8 字节 | ±5.0e−324 ~ ±1.7e308 | 0.0d | 64 位浮点数 |
decimal | 16 字节 | ±1.0 × 10−28 ~ 7.9 × 1028 | 0.0m | 128 位高精度浮点数,常用于财务计算 |
示例代码:
csharp
int age = 25; // int 类型
long distance = 9876543210L; // long 类型
bool isAdult = true; // bool 类型
char grade = 'A'; // char 类型
float pi = 3.14f; // float 类型
double e = 2.71828; // double 类型
decimal salary = 5000.50m; // decimal 类型
2. 引用类型 (Reference Types)
引用类型存储在堆(Heap)中,变量存储的是对象的引用地址,而不是直接包含对象的值。
数据类型 | 默认值 | 说明 |
---|---|---|
string | null | 字符串类型 |
object | null | 所有类型的基类 |
class | null | 类类型,用户定义的复杂类型 |
array | null | 数组类型 |
示例代码:
csharp
string name = "John"; // string 类型
object obj = 42; // object 类型,能存储任意类型
int[] numbers = { 1, 2, 3 }; // array 类型
3. 特殊类型
数据类型 | 默认值 | 说明 |
---|---|---|
enum | 第一个枚举值 | 枚举类型,定义一组命名常量 |
struct | 各字段的默认值 | 值类型,但可包含多个字段和方法 |
Nullable | null | 允许值类型变量为 null |
dynamic | 无 | 编译时不确定类型,运行时确定 |
示例代码:
csharp
enum Days { Sunday, Monday, Tuesday }; // 枚举类型
Days today = Days.Monday;
struct Point
{
public int X;
public int Y;
}
Point p;
p.X = 10;
p.Y = 20;
int? nullableInt = null; // Nullable 类型
dynamic dyn = "Hello"; // dynamic 类型
dyn = 123; // 运行时可以变更类型