相关疑难解决方法(0)

何时使用struct?

什么时候应该在C#中使用struct而不是class?我的概念模型是当项只是值类型的集合时使用结构.一种逻辑上将它们组合在一起形成一个有凝聚力的整体的方法.

我在这里遇到了这些规则:

  • 结构应该表示单个值.
  • 结构应具有小于16个字节的内存占用.
  • 创建后不应更改结构.

这些规则有效吗?结构在语义上意味着什么?

c# struct

1347
推荐指数
23
解决办法
26万
查看次数

C#中的通用不可变类

我在C#中以函数式编写代码.我的许多类都是不可变的,用于返回实例的修改副本的方法.

例如:

sealed class A
{
    readonly X x;
    readonly Y y;

    public class A(X x, Y y)
    {
        this.x = x;
        this.y = y;
    }

    public A SetX(X nextX)
    {
        return new A(nextX, y);
    }

    public A SetY(Y nextY)
    {
        return new A(x, nextY);
    }
}
Run Code Online (Sandbox Code Playgroud)

这是一个微不足道的例子,但想象一个更大的类,有更多的成员.

问题是构建这些修改后的副本非常冗长.大多数方法只更改一个值,但我必须将所有未更改的值传递给构造函数.

在使用修饰符方法构造不可变类时,是否存在避免所有这种样板的模式或技术?

注意:我不想使用本网站其他地方讨论struct原因.


更新:我发现这在F#中称为"复制和更新记录表达式".

c# oop design-patterns functional-programming immutability

6
推荐指数
1
解决办法
1185
查看次数