C# (Struct)结构的介绍

2021/9/8 9:06:26

本文主要是介绍C# (Struct)结构的介绍,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

C# (Struct)结构的介绍
在 C# 中,结构类型是一种可封装数据和相关功能的值类型 ,是隐式密封的值类型,不可继承。 使用 struct 关键字定义结构类型。struct 语句为程序定义了一个带有多个成员的新的数据类型。
例如,.NET 使用结构类型来表示数字(整数和实数)、布尔值、Unicode 字符以及时间实例。 如果侧重于类型的行为,请考虑定义一个类。
由于结构类型具有值语义,因此建议定义不可变的 结构类型。
C# 结构的特点
    1、结构可带有方法、字段、索引、属性、运算符方法和事件。
    2、 结构可定义构造函数,但不能定义析构函数。但是,您不能为结构定义无参构造函数。无参构造函数(默认)是自动定义的,且不能被改变。
    3、与类不同,结构不能继承其他的结构或类。
    4、结构不能作为其他结构或类的基础结构。
    5、 结构可实现一个或多个接口。
    6、 结构成员不能指定为 abstract、virtual 或 protected。
    7、当您使用 New 操作符创建一个结构对象时,会调用适当的构造函数来创建结构。与类不同,结构可以不使用 New 操作符即可被实例化。
    8、 如果不使用 New 操作符,只有在所有的字段都被初始化之后,字段才被赋值,对象才被使用。
    9、结构体中声明的变量无法赋予初值,类可以。 结构体的构造函数中,必须为结构体所有字段赋值,类的构造函数无此限制:
   10、类的对象是存储在堆空间中,结构存储在栈中。堆空间大,但访问速度较慢,栈空间小,访问速度相对更快。故而,当我们描述一个轻量级对象的时候,结构可提高效率,成本更低。当然,这也得从需求出发,假如我们在传值的时候希望传递的是对象的引用地址而不是对象的拷贝,就应该使用类了。

结构类型的设计限制

   设计结构类型时,具有与类类型相同的功能,但有以下例外:

  1、 不能声明无参数构造函数。 每个结构类型都已经提供了一个隐式无参数构造函数,该构造函数生成类型的默认值。

   2、 不能在声明实例字段或属性时对它们进行初始化。 但是,可以在其声明中初始化静态或常量字段或静态属性。

   3、 结构类型的构造函数必须初始化该类型的所有实例字段。

    4、结构类型不能从其他类或结构类型继承,也不能作为类的基础类型。 但是,结构类型可以实现接口。

    5、不能在结构类型中声明终结器。

C#结构的的作用
结构体是用来代表一个记录。假设您想跟踪图书馆中书的动态。您可能想跟踪每本书的以下属性:
 Title
 Author
 Subject
 Book ID


C#类 vs 结构

类和结构有以下几个基本的不同点:

    类是引用类型,结构是值类型。
    结构不支持继承。
    结构不能声明默认的构造函数。



这篇关于C# (Struct)结构的介绍的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程