使用可以变异的字段或完全是新实例

时间:2010-03-29 12:47:14

标签: c# struct

结构通常用于不可变数据,例如电话号码,它不会变异,而是你得到一个新的(例如,数字000变为0001意味着两个单独的数字)。

但是,像Name这样的信息片段可以变异(公司abc将其名称更改为abcdef,或者给出像def这样的新名称)。对于这样的字段,我假设它们应该驻留在可变类中而不是不可变结构中?

我构建代码的方法是在一个struct中有一个不可变的概念,比如Address(任何改变是一个完全新的地址),然后从像Customer这样的类引用它,因为Customer总是有一个地址。所以我会将CompanyName或Employer放在类中,因为它是可变的。但是名称可以变异,因此可以是相同的1个实例,也可以是新的名称设置,而公司仍然拥有第一个名称。

分配新实例的正确模式(例如新公司名称,但公司仍旧拥有的旧名称)是否为?:

string name = "";
string newName = new string();
newName = "new";
name = newName;

突变只是标准的分配模式吗?

由于

1 个答案:

答案 0 :(得分:0)

我不担心这个级别的可变性/不变性。只需编写您的代码即可。

关于代码示例的一件事:

string newName = new string();
newName = "new";

上面的代码将创建两个不同的字符串实例;首先将空字符串分配给newName,然后分配新字符串("new")。最有可能的是,空字符串实例的分配将被优化掉,因为它显然从未使用过。只需将字符串分配给它应该是:

string name = "new";