Это пример, который я видел в книге 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;
}
Автор говорит, что это будет работать для типа значения, а не для ссылочного типа.
Я не мог понять, что он имел в виду.
Кажется, теперь я понимаю: коллекция относится к типу ссылок. потребители "поля данных" не будут помнить, что они хранят копию в старом хранилище в куче.
если «data» был типом значения - потребители (другой код, который использует данные) будут помнить, что они хранят глубокую копию данных, и будут запрашивать их снова при необходимости обновления.
верно?