代码之家  ›  专栏  ›  技术社区  ›  Alan2

为什么一个命令只有一个{get;set}其他参数指定了一个支持字段?

  •  -2
  • Alan2  · 技术社区  · 4 年前

    鉴于此代码:

        public ICommand CopyCmd { get; set; }
    
        string _fullName;
    
        public string FullName
        {
            get => _fullName;
            set => SetProperty(ref _fullName, value);
        }
    

    2 回复  |  直到 4 年前
        1
  •  2
  •   Backs    4 年前

    因为 SetProperty implementation of INotifyPropertyChanged pattern . 所以,你的观点需要知道什么时候 FullName 值已更改。

        2
  •  1
  •   Joel Coehoorn    4 年前

    CopyCmd 自动实现属性等效于:

    private ICommand _CopyCmd;
    public ICommand CopyCmd {
       get { return CopyCmd;}
       set { _CopyCmd = value;  }
    }
    

    _CopyCmd 这对于C是不合法的,这样您就不能在自己的代码中意外地创建一个与支持字段冲突的名称。

    这个 FullName 不过,在 set 设置 块,但只要你做的不仅仅是将值赋给一个支持字段,你就不能再使用自动实现的属性了。

    在这种情况下,代码还调用 SetProperty() INotifyPropertyChanged