什么时候应该在C#中使用struct而不是class?我的概念模型是当项只是值类型的集合时使用结构.一种逻辑上将它们组合在一起形成一个有凝聚力的整体的方法.
我在这里遇到了这些规则:
这些规则有效吗?结构在语义上意味着什么?
我在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)
这是一个微不足道的例子,但想象一个更大的类,有更多的成员.
问题是构建这些修改后的副本非常冗长.大多数方法只更改一个值,但我必须将所有未更改的值传递给构造函数.
在使用修饰符方法构造不可变类时,是否存在避免所有这种样板的模式或技术?
更新:我发现这在F#中称为"复制和更新记录表达式".