结构类型(struct)的设计限制

结构体​在开发过程中用的比较少,如果是C#调用C++的相关函数可能会借助结构体来进行参数传递,了解结构体的相关知识,有助于我们更好的使用好结构体。

一、设计结构(struct)类型时,具有与类(class)类型相同的功能,但有以下例外:

  • 不能声明无参数构造函数。 每个结构类型都已经提供了一个隐式无参数构造函数,该构造函数生成类型的默认值。 备注从 C# 10 开始,可以在结构类型中声明无参数构造函数。 有关详细信息,请参阅无参数构造函数和字段初始值设定项部分。
  • 不能在声明实例字段或属性时对它们进行初始化。 但是,可以在其声明中初始化静态或常量字段或静态属性。 备注从 C# 10 开始,可以在声明实例字段或属性时对它们进行初始化。 有关详细信息,请参阅无参数构造函数和字段初始值设定项部分。
  • 结构类型的构造函数必须初始化该类型的所有实例字段。
  • 结构类型不能从其他类或结构类型继承,也不能作为类的基础类型。 但是,结构类型可以实现接口。
  • 不能在结构类型中声明终结器。

二、​结构体(struct)随着C# 版本的升级也在断的迭代.

  • 从 C# 7.2 开始,可以使用 readonly 修饰符来声明结构类型为不可变。
  • 从 C# 7.2 开始,可以在结构类型的声明中使用 ref 修饰符。
  • 在 C# 8.0 及更高版本中,这意味着除构造函数外的其他实例成员是隐式 readonly。
  • 从 C# 8.0 开始,可以定义一次性 ref 结构。
  • 从 C# 8.0 开始,还可以使用 readonly 修饰符声明实例成员不会修改结构的状态。
  • 在 C# 9.0 和更高版本中,可以将 readonly 修饰符应用于具有 init 访问器的属性或索引器。
  • 从 C# 10 开始,可以使用 with 表达式来生成修改了指定属性和字段的结构类型实例的副本。
  • 从 C# 10 开始,可以在结构类型中声明无参数构造函数。
  • 从 C# 10 开始,可以在声明实例字段或属性时对它们进行初始化。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值