c# - 为什么List.Add()不触发属性的Setter?

标签 c# list properties set setter

我有一个 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/

相关文章:

c# - 为什么 DateTime.Now DateTime.UtcNow 如此缓慢/昂贵

c# - 是否可以将 List<string> 作为事件记录类的属性

c# - 使用 Simperium 在 Simplenote 中创建新笔记时出现的问题

java - 如何在属性文件中保存多个用户名和密码

css - LESS 获取可继承的属性值

c# - 如何使用 c# 中的 MySQL 存储过程将表作为输入发送到存储过程?我有 T-SQL 工作

python - 如何在 python 中打印列表理解的进度?

java - 从根节点到所有子节点的 n-Tree 遍历

objective-c - 为什么我必须选派代表?

jquery - 在交替行上更改列表的方向