结构体在开发过程中用的比较少,如果是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 开始,可以在声明实例字段或属性时对它们进行初始化。