struct和class异同

本文对比了C#中struct(结构体)与class(类)的异同,从定义语法、存储方式、构造方法等方面详细解析,并介绍了它们各自适用的情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

struct 和 class的异同

一图理解struct和class的异同

在这里插入图片描述

1 相同点

A struct和class是同一等级的,属于命名空间下

B 可以定义字段、属性、方法、构造器等

C 有默认的无参构造方法

2 不同点

A 定义语法关键字不同(struct class)

B struct是值类型,class是引用类型,struct存储在栈中,但其中定义的引用类型是存储在堆中的

C struct中字段不能赋初始值,class中字段没有影响

D struct不能定义无参数的构造方法,且在有参构造函数中必须为所有字段和属性赋值

E struct中有参构造方法不会覆盖默认的无参构造方法,即可以new无参的结构,class中有参构造方法会覆盖默认的无参构造方法,即无法调用默认无参构造方法,因此在class中最好定义一个无参构造方法,防止new创建对象失败。

F 结构不能定义析构方法,class可以

G struct可以继承接口不可以继承class,class既可以继承接口,又可以继承class

3 适用情况

struct是一种特殊的值类型,栈的空间小,访问速度快,struct适用于字段、属性较少,作为一种组合类型使用,class作为一种面向对象拓展的类型使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值