2017-07-27 90 views
0

我有一個只讀屬性:C#.NET 3.5:屬性或索引不能被分配到「 - 」它是隻讀

public CollectionView View { get; } 

,我試圖從類的構造函數初始化:

public MyClass() 
{ 
    this.View = ...... 
} 

但標題中描述的錯誤正在出現。我在Visual Studio 2008上使用.NET 3.5。我記得在.NET和Visual Studio的更高版本中,只能從構造函數初始化/分配只讀屬性。在.NET 3.5中不可能嗎?如果沒有,我怎麼能在.NET 3.5中做到這一點?我的意思是,我想要一個只讀屬性,並且只能在構造函數中分配一次。

回答

2

在C#3.0中,他們沒有添加特殊處理只讀autoproperties所以你必須這樣做舊的方式:

public class MyClass { 
    private readonly CollectionView _View; 
    public CollectionView View { get { return _View; } } 

    public MyClass() { 
     this._View = ...; 
    } 
} 
0

我認爲正確的語法應爲:

public CollectionView View { get; private set; } 
+0

問題在於私有setter不會阻止非構造方法更改屬性值。 – NetMage

0

您只能使用只讀後臺字段和一個只有getter的屬性。像這樣

readonly CollectionView _view; 

public CollectionView View { get {return _view;} } 

public MyClass() 
{ 
    _view = .... 
} 
相關問題