当前位置: 首页 > ds >正文

C# CallerMemberName特性

当你在一个方法运用了CallerMemberName特性,编译器会自动将调用该方法的方法或属性的名称作为该参数的默认值,可应用于MVVM框架。

代码:

using System.ComponentModel;
using System.Runtime.CompilerServices;public class Person : INotifyPropertyChanged
{private string name;public event PropertyChangedEventHandler PropertyChanged;// 使用 [CallerMemberName] 来避免硬编码属性名protected void OnPropertyChanged([CallerMemberName] string propertyName = null){PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));}public string Name{get => name;set{if (name != value){name = value;OnPropertyChanged(); // 不需要传递参数,[CallerMemberName] 自动提供}}}
}

http://www.xdnf.cn/news/11071.html

相关文章:

  • JavaScript 核心原理深度解析-不停留于表面的VUE等的使用!
  • MicroROS简述
  • 中和农信如何破解小微农户融资难题
  • 【笔记】用命令手动下载并安装 tokenizers 库.whl文件(Python 3.12+)
  • CppCon 2014 学习:Return values take a ”closure” walk
  • 笔记︱数据科学领域因果推断案例集锦(第三弹)
  • 电商仓储出入库操作指引
  • 在 Dify 项目中的 Celery:异步任务的实现与集成
  • LabelMe安装踩坑
  • 异常检测 VS 监督学习
  • 谷歌地图高清卫星地图软件(Google Earth)v6.0.3.2197 中文版 - 前端工具导航
  • CppCon 2014 学习: Less Code = More Software
  • 深度学习入门——基于多层感知机的MNIST手写数字识别
  • 四、关系数据库标准语言SQL_3
  • ollama的安装及加速下载技巧
  • 凯撒密码:古典密码学的奠基者与技术解析
  • 沟通频率不合适,如何找到平衡点
  • RM-R1:基于推理任务构建奖励模型
  • 第十四天 设计一个OTA升级AB测试方案
  • 【C++11】折叠引用和完美转发
  • Leetcode 1336. 每次访问的交易次数
  • 【C/C++】公共接口调用:aaa.so: undefined reference to `GetXXX‘
  • 实现购物车微信小程序
  • Seata的AT、TCC、Saga模式的区别及适用场景?
  • 如何轻松删除 Android 上的文件(3 种方法)
  • lanqiaoOJ 1508:N皇后问题 ← dfs
  • Linux进程间通信(IPC)
  • TypeScript 中的字面量类型(Literal Types)
  • 什么是 Docker Compose 的网络(network),为什么你需要它,它是怎么工作的
  • 词语翻译的三步法与背后的语言学思维