我有一個類,定義了一個只讀屬性,有效地暴露了私人領域,像這樣:限制訪問方法調用只讀屬性
public class Container
{
private List<int> _myList;
public List<int> MyList
{
get { return _myList;}
}
public Container() : base()
{
_myList = new List<int>();
}
// some method that need to access _myList
public SomeMethod(int x)
{
_myList.Add(x);
}
}
現在這是不可能的,爲消費者管理我的財產直接,所以代碼像aContainer.MyList =新列表();生成編譯時錯誤。 然而,消費者是絕對自由調用各種對他得到的參考方法,所以這是完全合法的代碼
Container c = new Container();
Console.WriteLine(c.MyList.Count);
c.MyList.Add(4);
Console.WriteLine(c.MyList.Count);
哪種擊敗了整個只讀概念。
有沒有什麼理智的解決方法可以讓我擁有一個真正的只讀引用propery?
P.S.我不能只是返回一份清單的副本,因爲那時用戶會認爲他做了所有必要的更改,但是可惜...他們將會消失。
忘記在代碼中寫入_myList是隻讀的。 ;) – Spoike 2009-01-14 14:34:08
該字段本身不是隻讀的,它是從其他類方法訪問的,只有屬性是隻讀的。 但是,即使聲明該字段只讀也沒有幫助:( – SWeko 2009-01-14 14:38:49