跳转至

C# 数据类型#

C# 的数据类型分为两大类:值类型(value type)与引用类型(reference type)。

类别 存储位置 示例
值类型 栈(stack) intdoublecharboolstruct
引用类型 堆(heap),栈中存地址 stringclass、数组

值类型#

1. 整数类型#

类型 大小 取值范围
byte 8 位 0 ~ 255
sbyte 8 位 -128 ~ 127
short 16 位 -32768 ~ 32767
ushort 16 位 0 ~ 65535
int 32 位 -2.1亿 ~ 2.1亿
uint 32 位 0 ~ 42.9亿
long 64 位 更大范围

常用intbyte

2. 浮点类型#

类型 大小 精度 适用场景
float 32 位 约 7 位 一般浮点运算
double 64 位 约 15 位 默认浮点类型
decimal 128 位 约 28 位 涉及金钱的计算

精度比较float < double < decimal

使用后缀:

float a = 1.2f;    // f 后缀
decimal b = 1.2m;  // m 后缀
double c = 1.2;    // 默认 double,无需后缀

经验法则:

  • 默认使用 double
  • 涉及钱的计算必须使用 decimal

3. 字符类型#

  • char:单个字符,使用单引号包裹,如 'a''牛'

4. 布尔类型#

  • bool:只有两个值 truefalse
  • 使用:bool a = true;

数据类型转换#

1. 隐式转换#

取值范围小、精度低的类型可以直接向大的、高的类型自动转换,无需强制转换。

转换方向:

浮点类型 > 整数类型 > 字符类型

有符号流:

sbyte < short < int < long < float < double

无符号流:

byte < ushort(或 char) < uint < ulong < float < double

2. 强制转换(显式转换)#

取值范围大、精度高的类型向小的、低的类型转换,需要手动指定。

(int)(byte)(sbyte)

显式转换可能丢失精度(如 (int)3.9 结果为 3),需谨慎使用。

3. 字符串转值类型#

string 是引用类型,将字符串转换为值类型可使用 FCL(框架类库)提供的方法:

string str = "123";
int num = int.Parse(str);      // 转换为 int
int num2 = Convert.ToInt32(str); // 另一种转换方式

注意:int.Parse() 转换失败会抛出 FormatException,可使用 int.TryParse() 安全转换。

练习#

  1. 定义一个 int 类型的变量,转换为 char 类型并输出
  2. 定义一个 double 类型的变量,转换为 float 类型并输出
  3. 定义一个字符串类型的变量,里面是纯数字,然后转换为 int 类型
  4. 定义一个字符串类型的变量,里面不是纯数字,然后转换为 int 类型,会发生什么?

相关笔记#