自动属性和不可变类型

时间:2013-12-20 10:59:47

标签: c# .net

我按照这种模式编写了大量不可变类型:

class A 
{
  private readonly SomeType b;

  public A(SomeType b)
  {
    this.b = b;
  }

  public SomeType B
  {
    get {return b; }
  }
}

是否可以使用自动属性复制此模式?我能得到的结果是:

class A 
{
  public A(SomeType b)
  {
    B = b;
  }

  public SomeType B
  {
    get; private set;
  }
}

但这并不令人满意,因为它并不能保证对B的引用不会改变(我们有效地丢失了readonly)。是否有可能做得更好?

1 个答案:

答案 0 :(得分:1)

使用当前版本的C#,这是不可能的。但是,this blog post提到了C#设计团队在最近一次会议上讨论的C#6中可能出现的新功能 - 只读自动属性,这正是您所追求的。

public int X { get; } = x;