c# - 在不添加私有(private)变量的情况下引发 propertychanged 事件

标签 c#

我有一个看起来像这样的属性。

public int NumberOfElephants { get; set; }

这个属性在一个 observablecollection 中,它必须通知另一个属性它已经改变了。

我会怎么做

public int NumberOfElephants { get; set { OnPropertyChanged("totalAnimals"); }

不需要这样的代码

private int _numberOfElephants;
public int NumberOfElephants { 
    get { 
        return _numberOfElephants; 
    } 

    set { 
        _numberOfElephants = value; 
        OnPropertyChanged("totalAnimals"); 
    } 
}

最佳答案

你不知道。你不能。

自动实现的属性在属性很简单时起作用——当获取/设置除了“返回变量的值”或“设置变量的值”之外不需要代码时。你可以通过重新格式化来缩短它,当然......我会这样写:

private int numberOfElephants;
public int NumberOfElephants {
    get { return numberOfElephants; }

    set {
        _numberOfElephants = value; 
        OnPropertyChanged("totalAnimals"); 
    } 
}

实际上,我会在集合的开头和属性的开头使用“单独一行的左大括号”,但我保留了您喜欢的样式。但是在一行中使用“单个表达式 get/set 实现”可以使具有大量属性的类更加简洁。

关于c# - 在不添加私有(private)变量的情况下引发 propertychanged 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7847057/

相关文章:

c# - 提高并发字典访问效率c#

c# - 添加依赖于第一个类型的第二个类型时出错

c# - 在 C# 中使用实例化的父类(super class)调用构造函数

c# - Shopify api 更新变体返回错误

c# - 日、月、日、年的日期格式

c# - 为什么字符串 "\u0022"以这个字符串 "\u204D"开头

c# - DateTime ToString (“dd/MM/yyyy” ) 返回 dd.MM.yyyy

c# 将带有对象列表的 json 字符串转换为 c# 对象

c# - P/调用结构中定义长度的 C char* 数组

c# - 如何向 xaml 中的绑定(bind)添加附加文本(或字符串)