C# 中结构体和类的区别

2024 年 8 月 29 日 | 5 分钟阅读

本文将讨论 C# 中 structclass 之间的区别。但在讨论其区别之前,我们必须了解 C# 中的 struct 和 class。Classesstructures 可以在 C# 中用于构建自定义数据类型,但它们之间存在重要区别。与结构不同,类可以继承自其他类。换句话说,structure 不能继承自类。

引用类型和值类型之间的区别在于,类是引用类型,这意味着无论何时创建类的组件,都会创建一个指向该对象的引用,并且每当使用引用时,都会反映出对该对象的任何更改。

另一方面,structure 是一种值类型,这意味着当您创建结构类型变量时,变量的实际值存储在内存中。相反,对变量的修改在其他地方是看不到的。

什么是类?

Class 是一个用户定义的蓝图或原型,用于构建事物。类将字段和方法(定义操作的成员函数)组合成一个单一的单元。

示例

文件名:Class.cs

输出

Author's Name: John Doe
Primary Language: C#
Total Published Articles: 80
Total Authored Improvements: 50

什么是结构?

Structure 是一个值类型,并且是包含在单个单元中的各种数据类型的变量的集合。它类似于类,因为它们都是用户定义的数据类型,可以容纳各种数据类型。C# 允许您使用预定义的数据类型。但是,用户可能需要设计自己的数据类型,通常称为用户定义数据类型。虽然它属于值类型,但用户可以对其进行编辑以满足其需求,这也称为用户定义信息类型。

语法

它具有以下语法:

示例

文件名:Struct.cs

输出

Information about person1: Name: Alice Johnson, Age: 25, Body Weight: 65

Struct 和 Class 的主要区别

Struct 和 Class 在 C# 中有几个主要区别。Struct 和 Class 之间的一些主要区别如下:

默认构造函数:每当创建类的对象时,都会调用默认构造函数。另一方面,结构没有默认构造函数。

初始化:每当创建类对象时,其组件都会设置为默认设置(引用类型为 null,值类型为 0)。每当创建类型变量的对象时,其所有成员都已使用其默认值设置。每当创建结构类型的变量时,用户可以为每个结构组件提供初始值。

大小和性能:结构通常比类小,因为它们不包含引用参数或开销。这意味着将结构作为参数传递或复制可能比类更快。

在 C# 中,子类结构之间的主要区别包括继承、引用类型与值类型、默认构造函数、初始化以及大小/性能。结构适用于较小、较简单的、经常使用且需要快速传递的事物,而类则用于较大、更复杂的对象。但是,类和结构都有优缺点,最终的决定取决于项目的具体需求。

C# 中 struct 和 class 的并列比较

C# 中 struct 和 class 有几个并列比较。Struct 和 Class 之间的一些主要区别如下:

Class结构
类是引用类型Struct 是值类型
所有引用类型都分配堆内存。任何值类型都分配栈内存。
分配大型引用类型比分配大型值类型成本更低。与引用类型相比,值类型的分配和解除分配成本更低。
类有许多方面。Struct 的功能有限。
类通常用于大型程序。Struct 用于小型程序。
类可以包含构造函数和析构函数。结构没有无参数或析构函数,但它们可能有带参数或静态构造函数。
使用 new 关键字创建类的实例。Struct 可以使用 new 关键字或不使用 new 关键字创建实例。
一个类可以继承自另一个类。Struct 不允许继承自另一个结构或类。
类的成员数据可以被封装。Struct 的数据成员不能是受保护的。
类的函数成员可以是私有的或抽象的。Struct 的函数成员不能是虚拟的或抽象的。
同一个类的两个变量可以引用同一个对象。在一个变量上执行的操作可能会影响另一个变量。Struct 中的每个变量都有自己的数据副本(ref 和 out 参数变量除外),在一个变量上执行的任何操作都不会影响另一个变量。