【一起来阅读《C#图解教程》吧--结构

什么是结构

结构是程序员定义的数据类型,与类非常类似。它们有数据成员和函数成员。虽然与类相似,但是有许多重要的区别。

  • 类是引用类型而结构是值类型;
  • 结构是隐式密封的,这意味着它们不能被派生。

结构是值类型

  • 结构类型的变量不能为null
  • 两个结构变量不能引用同一对象

image.png

对结构赋值

把一个结构赋值给另一个结构,就将一个结构的值复制给另一个结构。这和复制类变量不同,复制类变量时只复制引用。

结论就是:对于一个结构实例A,将结构实例B赋值给它,那么它的成员的值会和B中一样。而对于一个类实例C而言,如果将一个类实例D赋值给它,那么则C也会指向D所指向的堆中的数据。

构造函数

结构可以有实例构造函数和静态构造函数,但不允许有析构函数。

实例构造函数

语言隐式地为每个结构提供一个无参数的构造函数。这个构造函数把结构的每个成员设置为该类型的默认值。值成员设置成它们的默认值,引用成员设置成null。

预定义的无参数构造函数对每个结构都存在,而且不能删除或重定义。但是,可以创建另外的构造函数,只要它们有参数。注意,这和类不同。对于类,编译器只在没有其他构造函数声明时提供隐式的无参数构造函数。

调用构造函数需要是用new关键字,无论它们是隐式的构造函数还是自己定义的显示的构造函数。

也可以不适用new运算符创建结构的实例,但是会有一些限制:

  • 在显示设置数据成员之后,才可以使用它们的值
  • 在对所有数据成员赋值之后,才能调用任何函数成员。

image.png

静态构造函数

结构的静态构造函数创建并初始化静态数据成员,而且不能引用实例成员。结构的静态构造函数遵从与类的静态构造函数一样的规则。

在调用显示声明的构造函数或者引用结构的静态成员之前,都会调用静态构造函数。

字段初始化语句是不允许的

在结构体中不可以像类一样对字段进行初始化。

struct Simple
{
    public int x = 0;//编译错误,不可以在结构体中初始化语句。
}

结构体是密封的

不可以在用 protected、internal、abstract、virtual来修饰结构体,因为结构体是密封的,不可以被用来继承的,所以这些修饰符不可以用来修饰结构体。

结构体作为返回值和参数

  • 返回值:当结构体作为返回值是,将创建他的副本并从函数成员返回。
  • 值参数:当结构体被用作值参数时,将创建实参结构的副本。该副本用于方法的执行中。
  • ref out:如果把一个结构用作ref或out参数,传入方法的是该结构的一个引用。这样就可以修改其数据成员。
posted @   LemonInCup  阅读(107)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示