C#面:简述 类(class)与结构(struct)的异同

类和结构是两种不同的数据类型。

都是用于封装数据和行为的数据类型,但它们在内存分配、继承、赋值和访问方式等方面有一些重要的区别。

相同:

  1. 类和结构都是用户自定义的数据类型,用于封装数据和行为。
  2. 类和结构都可以包含字段、属性、方法和事件等成员。
  3. 类和结构都可以定义构造函数来初始化对象。
  4. 类和结构都可以实现接口,从而支持多态性。

不同:

  1. 类是引用类型,而结构是值类型。这意味着当使用类创建对象时,实际上是在堆上分配了一块内存,并返回一个指向该内存的引用;而使用结构创建对象时,对象直接存储在栈上,不需要额外的内存分配和垃圾回收。
  2. 类支持继承,可以通过派生类扩展和修改类的行为;而结构不支持继承,它们是封闭的,不能被其他类型继承。
  3. 类的实例可以被赋值为null,表示对象不存在; 而结构的实例不能为null,因为它们是值类型,需要是有一个有效的值。
  4. 类的实例是通过引用访问的,可以在多个地方共享同一个对象;而结构的实例是通过复制访问的,每次使用时都会创建一个新的副本。
  5. 类的实例在堆上分配内存,由垃圾回收器负责回收;而结构的实例在栈上分配内存,当超出作用域时自动释放。
相关推荐
小年糕是糕手9 小时前
【C++】C++入门 -- inline、nullptr
linux·开发语言·jvm·数据结构·c++·算法·排序算法
郝学胜-神的一滴9 小时前
Python中一切皆对象:深入理解Python的对象模型
开发语言·python·程序人生·个人开发
csbysj20209 小时前
JSP 隐式对象
开发语言
星期天29 小时前
3.2联合体和枚举enum,还有动态内存malloc,free,calloc,realloc
c语言·开发语言·算法·联合体·动态内存·初学者入门·枚举enum
梵克之泪9 小时前
【号码分离】从Excel表格、文本、word文档混乱文字中提取分离11位手机号出来,基于WPF的实现方案
开发语言·ui·c#
charlie11451419110 小时前
面向C++程序员的JavaScript 语法实战学习4
开发语言·前端·javascript·学习·函数
夫唯不争,故无尤也10 小时前
Python广播机制:张量的影分身术
开发语言·python
qq_4798754310 小时前
X-Macros(3)
java·开发语言
列逍10 小时前
深入理解 C++ 异常:从概念到实战的全面解析
开发语言·c++
java1234_小锋10 小时前
简述Mybatis的插件运行原理?
java·开发语言·mybatis