我有一个 List<String>
类型的属性命名SuggestionFirstName
。
我使用MVVMlight,所以我使用Set()
在 setter 中
public ObservableCollection<string> SuggestionFirstName
{
get { return _suggestionsFirstName; }
set { Set(ref _suggestionsFirstName, value); }
}
如果我这样做
SuggestionLastName = new List<String>();
SuggestionLastName.Add("hello");
为什么第二条指令不会触发 set{ }
属性的方法?
最佳答案
SuggestionLastName 是某个对象的属性,它在这一行中设置:
SuggestionLastName = new List<String>();
看,它创建了一个新列表,然后设置属性来记住该列表。
然后,这一行:
SuggestionLastName.Add("hello");
执行相反的操作:它读取属性以保留该列表,然后将项目直接添加到刚刚从属性读取的同一列表 。不会发生“设置属性”。属性被读取,然后列表内容发生变化。列表没有改变。
关于c# - 为什么List.Add()不触发属性的Setter?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42573854/