【一起来阅读《C#图解教程》吧--结构
什么是结构
结构是程序员定义的数据类型,与类非常类似。它们有数据成员和函数成员。虽然与类相似,但是有许多重要的区别。
- 类是引用类型而结构是值类型;
- 结构是隐式密封的,这意味着它们不能被派生。
结构是值类型
- 结构类型的变量不能为null
- 两个结构变量不能引用同一对象
对结构赋值
把一个结构赋值给另一个结构,就将一个结构的值复制给另一个结构。这和复制类变量不同,复制类变量时只复制引用。
结论就是:对于一个结构实例A,将结构实例B赋值给它,那么它的成员的值会和B中一样。而对于一个类实例C而言,如果将一个类实例D赋值给它,那么则C也会指向D所指向的堆中的数据。
构造函数
结构可以有实例构造函数和静态构造函数,但不允许有析构函数。
实例构造函数
语言隐式地为每个结构提供一个无参数的构造函数。这个构造函数把结构的每个成员设置为该类型的默认值。值成员设置成它们的默认值,引用成员设置成null。
预定义的无参数构造函数对每个结构都存在,而且不能删除或重定义。但是,可以创建另外的构造函数,只要它们有参数。注意,这和类不同。对于类,编译器只在没有其他构造函数声明时提供隐式的无参数构造函数。
调用构造函数需要是用new关键字,无论它们是隐式的构造函数还是自己定义的显示的构造函数。
也可以不适用new运算符创建结构的实例,但是会有一些限制:
- 在显示设置数据成员之后,才可以使用它们的值
- 在对所有数据成员赋值之后,才能调用任何函数成员。
静态构造函数
结构的静态构造函数创建并初始化静态数据成员,而且不能引用实例成员。结构的静态构造函数遵从与类的静态构造函数一样的规则。
在调用显示声明的构造函数或者引用结构的静态成员之前,都会调用静态构造函数。
字段初始化语句是不允许的
在结构体中不可以像类一样对字段进行初始化。
struct Simple
{
public int x = 0;//编译错误,不可以在结构体中初始化语句。
}
结构体是密封的
不可以在用 protected、internal、abstract、virtual来修饰结构体,因为结构体是密封的,不可以被用来继承的,所以这些修饰符不可以用来修饰结构体。
结构体作为返回值和参数
- 返回值:当结构体作为返回值是,将创建他的副本并从函数成员返回。
- 值参数:当结构体被用作值参数时,将创建实参结构的副本。该副本用于方法的执行中。
- ref out:如果把一个结构用作ref或out参数,传入方法的是该结构的一个引用。这样就可以修改其数据成员。
分类:
编程基础
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律