代码之家  ›  专栏  ›  技术社区  ›  GurdeepS

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

  •  3
  • GurdeepS  · 技术社区  · 14 年前

    结构通常用于不可变的数据,例如电话号码,它不会发生变化,但是会得到一个新的号码(例如,000变成0001意味着两个独立的号码)。

    但是,名称、字符串等信息可能会发生变化(abc公司将其名称更改为abc def,或者被赋予def这样的新名称)。对于这样的字段,我假设它们应该位于可变类中,而不是可变结构中?

    我构造代码的方法是在结构中有一个不变的概念,比如Address(任何更改都是一个新地址),然后从Customer类引用它,因为Customer总是有一个地址。所以我会把CompanyName或Employer放在类中,因为它是可变的。但是,一个名称可以发生变化,因此可以是同一个实例,也可以是一个新的名称设置,而公司仍然拥有第一个名称。

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

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

    变异只是标准的分配模式?

    谢谢

    1 回复  |  直到 14 年前
        1
  •  0
  •   Fredrik Mörk    14 年前

    在这个层次上,我不会担心易变性/不变性。写代码要直截了当。

    关于代码示例的一点是:

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

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

    string name = "new";