C# 数据类型

值类型

  • 存储在栈里
  • 值类型是C#类型中的两个主要类型之一
  • 所有的值类型均隐式派生自 System.ValueType
  • 值类型在内存管理方面具有更好的效率,并且不支持多态,适合用做存储数据的载体
  • 值类型的变量包含类型的实例, 将一个值类型变量赋给另一个值类型变量时,将复制包含的值

整型数值类型

  • 整型数值类型表示整数
  • 整型数值类型均为值类型 ,它们还是简单类型,可以使用整数文本进行初始化
  • 整型数值类型都支持算术、位逻辑、比较和相等运算符
C#类型/关键字范围大小.NET 类型
sbyte-128 到 1278 位带符号整数System.SByte
byte0 到 255无符号的 8 位整数System.Byte
short-32,768 到 32,767有符号 16 位整数System.Int16
ushort0 到 65,535无符号 16 位整数System.UInt16
int-2,147,483,648 到 2,147,483,647带符号的 32 位整数System.Int32
uint0 到 4,294,967,295无符号的 32 位整数System.UInt32
long-9,223,372,036,854,775,808 到 9,223,372,036,854,775,80764 位带符号整数System.Int64
ulong0 到 18,446,744,073,709,551,615无符号 64 位整数System.UInt64
nint取决于(在运行时计算的)平台带符号的 32 位或 64 位整数System.IntPtr
nuint取决于(在运行时计算的)平台无符号的 32 位或 64 位整数System.UIntPtr

浮点数值类型

  • 浮点数值类型表示实数
  • 浮点型数值类型均为值类型,它们还是简单类型,可以使用真实文本进行初始化
  • 浮点数值类型都支持算术、比较和相等运算符
C#类型/关键字范围精度大小.NET 类型
float±1.5 x 10−45 至 ±3.4 x 1038约 6-9 位4个字节System.Single
double±5.0 × 10−324 到 ±1.7 × 10308约 15-17 位8个字节System.Double
decimal±1.0 x 10-28 至 ±7.9228 x 102828-29 位16 个字节System.Decimal

bool

  • bool 是 .NET System.Boolean 结构类型的别名
  • 表示一个布尔值,可以为 true 或者 false
  • 默认值为 false

char

  • char 是 .NET System.Char 结构类型的别名
  • 表示 Unicode UTF-16 字符
  • 默认值为 \0,即 U+0000
类型范围大小.NET 类型
charU+0000 到 U+FFFF16位System.Char

枚举

  • 枚举是由基础整型数值类型的一组命名常量定义的值类型
  • 定义枚举类型的关键字为enum
  • 枚举成员默认关联的常数值类型为 int ,从 0 开始,并按定义文本顺序递增 1

结构

  • 结构是一种可封装数据和相关功能的值类型
  • 定义结构类型的关键字为struct
  • 从 C# 7.2 开始,可以使用 readonly 修饰符来声明结构类型为不可变,但结构的所有数据成员也都必须是只读的

元组

  • 使用元组功能需要 System.ValueTuple 类型和相关的泛型类型

可为null的值类型

数值转换

隐式数值转换

显示数值转换

引用类型

  • 分配在堆上
  • 引用类型是C#类型中的两个主要类型之一
  • 引用类型直接继承自System.Object
  • 引用类型的默认值为null
  • 引用类型两种变量可引用同一对象;对一个变量执行的操作会影响另一个变量所引用的对象

class

  • 类只能单继承
  • 类可以实现多个接口
  • 类的默认访问修饰符为 internal
  • 类成员的默认访问修饰符为 private

访问修饰符有public、protected internal、protected、internal、private、private protected等六种
类可包含构造函数、常量、Fields、终结器、方法、属性、索引器、运算符、事件、委托、类、接口、结构类型、枚举类型等成员

interface

record

内置引用类型

对象类型

字符串类型

委托类型

动态类型

void

var

内置类型

非托管类型

满足非托管类型的条件

  • sbyte、byte、short、ushort、int、uint、long、ulong、char、float、double、decimal 或 bool
  • 任何枚举类型
  • 任何指针类型
  • 任何用户定义的 struct 类型,只包含非托管类型的字段,并且在 C# 7.3 及更早版本中,不是构造类型

默认值

类型默认值
任何引用类型null
任何内置整数数值类型0
任何内置浮点型数值类型0
boolfalse
char‘\0’ (U + 0000)
enum表达式 (E)0 生成的值,其中 E 是枚举标识符
struct将所有值类型的字段设置为其默认值,将所有引用类型的字段设置为 null
任何可以为 null 的值类型HasValue 属性为 false 且 Value 属性未定义的实例
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值