相关疑难解决方法(0)

不可变类vs结构

以下是类与C#中的结构不同的唯一方法(如果我错了请纠正我):

  • 类变量是引用,而struct变量是值,因此struct的整个值被复制到赋值和参数传递中
  • 类变量是存储在堆栈上的指针,指向堆上的内存,而struct变量作为值存储在堆上

假设我有一个不可变的结构,即包含初始化后无法修改的字段的结构.每次我将此结构作为参数传递或在赋值中使用时,该值都将被复制并存储在堆栈中.

然后假设我使这个不可变的结构成为一个不可变的类.此类的单个实例将创建一次,并且只有对类的引用将被复制到赋值和参数传递中.

如果对象是可变的,则这两种情况下的行为会有所不同:当一个人改变对象时,在第一种情况下,结构的副本将被修改,而在第二种情况下,原始对象将被改变.但是,在这两种情况下,对象都是不可变的,因此这个对象的用户实际上是类还是结构没有区别.

由于复制引用比复制struct便宜,为什么要使用不可变结构?

此外,由于可变结构是邪恶的,看起来根本没有理由使用结构.

我哪里错了?

c# struct class immutability

20
推荐指数
2
解决办法
2642
查看次数

标签 统计

c# ×1

class ×1

immutability ×1

struct ×1