这是我在Effective C#书中看到的一个示例:
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 类型。“数据字段”的消费者不会记得他们持有堆上旧存储的副本。如果“数据”是值类型 - 消费者(使用数据的其他代码)会记得他们持有数据的深层副本,并会在需要更新时再次请求它。
正确的 ?