数据类型

未分类
1.6k 词

成功不是最终的,失败不是致命的,继续前进的勇气才是最重要的。 ——温斯顿·丘吉尔

基本定义

C# 中内置了一些基本的数据类型,数据类型用于指定程序中变量、常量或表达式可以存储的数据的类型
C# 中的数据类型可以分为三大类:

  • 值类型 (Value types)
  • 引用类型 (References types)
  • 指针类型 (Pointer types)




值类型

对于值类型的变量我们可以直接为其分配一个具体的值,每个值类型变量都有自己独立的内存空间,对一个变量的操作不会影响其他变量
如下是一些基本的值类型:

值类型可以分为四大类:

整型
  • 用于储存整数,不含小数
  • 整型根据占用字节数又分为不同的类型,并且还分有符号整数和无符号整数
    有符号整数 无符号整数
    sbyte byte
    int uint
    long ushort
    short ulong
浮点型
  • 用于储存包含整数部分和小数部分的数据
  • 根据精度不同,浮点型共分为:
    float (单精度浮点型)
    double (双精度浮点型)
    decimal (高精度浮点型)
  • 浮点型数据的默认类型都是 double
布尔类型
  • bool类型是一种用于表示逻辑值的值类型,其仅能取 truefalse 这两个值
  • bool类型的数据的默认值为 false
1
2
3
byte count = 23;
bool result = (count < 0); // 判断count是否小于0并返回一个布尔值给result
Console.WriteLine(result); // False
字符型
  • 字符型 (char) 用于表示单个 Unicode 字符
  • 通过 char 关键字声明的字符型字面量必须用单引号包裹
  • char 类型可表示 Unicode 字符集中从 \u0000 到 \uffff 的字符,其数值范围(0~65535)与 16 位无符号整数相同,且可通过强制转换与整数类型互通
1
2
3
char c = 'A';
int intC = c;
Console.WriteLine(intC); // 65
  • 无法直接打印的功能性字符,需用转义序列表示:
1
2
3
4
5
6
/*
'\n' 换行符
'\t' 制表符 (将文本缩进一段距离)
'\r' 回车符 (光标回到行首,若后续有输出内容,会覆盖当前行开头的字符)
'\\' 转义符 (表示实际的反斜杠 \)
*/




可空类型的定义与声明方式

可空类型(Nullable Types)是一种特殊的数据类型,允许值类型接收 null 值
可空类型的声明方式主要有两种:

  • 通过在值类型名后添加 ? 符号来声明一个可空类型
1
2
int? a = null;
Console.WriteLine(a); // null
  • 也可以使用泛型形式 Nullable<T> (T为值类型) 声明,两种方式完全等效
1
2
Nullable<byte> count = null;
Console.WriteLine(count); // null




可空类型的常用属性

可空类型提供两个重要属性来判断和获取值:

  • HasValue 该属性是一个布尔值,当其为 true 时表示该变量有值 (非 null),false 则表示其为 null
  • Value 获取变量存储的实际值(仅当 HasValue 为 true 时有效,否则会抛出异常)
1
2
3
4
5
byte? score = null;
Console.WriteLine(score.HasValue); // False
score = 99;
Console.WriteLine(score.HasValue); // True
Console.Write(score.Value); // 99




Null合并运算符

可空类型常与 ?? 运算符结合使用,用于为 null 值提供默认值

1
2
3
4
5
6
int? num = null;
int result = num ?? -1; // 若num为null,则result取-1;否则取num的值
Console.WriteLine(result); // -1
num = 20;
result = num ?? -1;
Console.WriteLine(result); // 20