c# - 在类里面,您是将值分配给属性还是支持字段

标签 c#

假设我在一个类中有以下内容(扩展了 MVVMLight 的 ViewModelBase):

private ObservableCollection<Merchant> merchants;

public ObservableCollection<Merchant> Merchants
{
    get { return merchants; }
    set { Set(nameof(Merchants), ref merchants, value); }
}

在我的类中,我应该初始化属性值还是支持字段?在我的类的方法中,我应该使用属性还是支持字段?

我只是在学习,我倾向于同时使用两者,我看不出有什么区别。

简单地说:在类内部,我应该使用属性还是它的支持字段?

最佳答案

这真的取决于你想做什么。

当您的属性引发 PropertyChanged 时,最好使用属性 setter 而不是支持字段,即使是在您的类中也是如此,这样消费者就会收到更改值的通知。

不过有一个异常(exception):在你的构造函数中,你会使用支持字段,因为那时没有消费者可能已经订阅了 PropertyChanged 事件,所以从构造函数引发事件是没必要。

如果你的 setter 中有其他逻辑 - 比如验证 - 你总是应该使用属性 setter 而不是支持字段。

关于c# - 在类里面,您是将值分配给属性还是支持字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19397940/

相关文章:

c# - 使用继承自 List<T> 的类进行 JSON 序列化

c# - Html 敏捷包 - 新的 HtmlAttribute

c# - Winsock 连接失败,出现错误 10049

c# - 对于不需要在 C# 中本地化的值,资源文件与静态类

c# - SQL 程序集和 SQL 注入(inject)

c# - ASP.NET 3.0。无法在 POST 请求中将日期(以秒为单位)从 JSON 转换为 System.Date

c# - 错误绑定(bind) Gridview : "The current TransactionScope is already complete"

C# - 搜索字典的键与搜索列表中的值

c# - 设置正在抛出 StackOverflowException C#

c# - 如何将多维 (2D) 数组按行分成多个一维数组?