這是我在Effective C#書中看到的例子:swaping集防禦性副本
private BindingList<PayrollData> data;
public IBindingList MyCollection
{
get { return data; }
}
public void UpdateData()
{
// Unreliable operation might fail:
var temp = UnreliableOperation();
// This operation will only happen if
// UnreliableOperation does not throw an
// exception.
data = temp;
}
作者說這會爲值類型而不是引用類型的工作。 我無法理解他的意思。
我想我現在明白了:一個集合是一個ref類型。 「數據字段」的消費者不會記得他們將副本保留在堆上的舊存儲中。 如果「數據」是值類型 - 消費者(使用數據的其他代碼)會記住他們持有數據的深層副本,並在需要更新時再次請求它。
對不對?
這裏很難遵循你的思路。請詳細說明。 –