将代码添加到 C# 属性获取/设置而不需要支持字段?

2024-02-25

您知道如何拥有自动生成支持字段的属性吗?就像我去的话:

public String SomeProperty {get; set;}

我知道,如果我想向该属性添加代码,我必须创建支持字段,如下所示:

 public string someProperty = string.Empty;
 public string SomeProperty
 {
     get { return someProperty; }
     set
     {
         someProperty = value;
         DoSomething();
     }
 }

基本上,我想知道的是......有什么方法可以做到这一点,但不必创建支持字段?例如,我可以使用它来触发设置属性时发生的某种事件。我正在寻找这样的东西:

 public string SomeProperty
 {
     get;
     set { this.OnSomeEvent; }
 }

但我知道这会导致编译错误,因为get如果需要声明一个主体set does.

我研究过,但找不到任何东西,但我想我应该检查一下是否有人知道。

我想我真正想要的是在属性更改时触发事件的某种方式,但不必添加所有额外的混乱。有什么建议么?


简单的答案是否定的,你不能两者兼顾。从.NET 文档 https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/auto-implemented-properties:

在 C# 3.0 及更高版本中,自动实现的属性使属性声明更加简洁当属性访问器中不需要额外的逻辑时。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将代码添加到 C# 属性获取/设置而不需要支持字段? 的相关文章

  • 我的 std::hash for std::tuples...有什么改进吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 有些人可能已经注意到 std hash 不支持元组 所以我添加了一个重载 它看起来比我到目前为止看到的解决方案 更好 有人有进一步减少这段代码的
  • 信号与信号2

    我的应用程序可能会受益于使用 boost 的信号库之一而不是本土解决方案 该应用程序是多线程的 但执行信号处理的部分是单线程的 如果多线程不是问题 是否有任何理由更喜欢 Boost Signals2 而不是 Boost Signal Boo
  • 头文件中实现的函数的静态与内联

    我想到的方式inline在 C 中用于链接 作用域 我把它放在同一个篮子里extern and static对于全局对象 通常 对于在头文件中实现的函数 我的首选解决方案是将其设为静态 In Foo h static void foo Do
  • Winform DatagridView 数字列排序

    我只使用一个简单的 DataGridView 来保存一堆数据 有趣的是 我在特定列中有小数 但是当按小数列排序时 它的排序是错误的 例如 起始顺序可能是 0 56 3 45 500 89 20078 90 1 56 100 29 2 39
  • 对 ExecuteNonQuery() 的单次调用是原子的

    对 ExecuteNonQuery 的单次调用是否是原子的 或者如果单个 DbCommand 中有多个 sql 语句 那么使用事务是否有意义 请参阅我的示例以进行说明 using var ts new TransactionScope us
  • C# 中 PKCS11Interop 库的线程安全使用 [已关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在使用 PKCS11Interop 在 HSM 内执行密钥管理操作 我使用的 HSM 是 Thales PCI Express 下面是
  • 我可以将 char 或 DateTime 设置为 null 吗?

    我可以将 null 设置为char数据类型 并且DateTime在 C 中 多谢你们 这是不可能的 它是一个值类型 使用 char myChar null DateTime myDate null 这相当于 Nullable
  • 预编译头和 Visual Studio

    有没有办法设置 Visual Studio 解决方案参数 以便它只创建预编译头而不构建整个解决方案 具体来说 它是一个巨大的 C 解决方案 本身有许多项目 谢谢 仅选择 pch 创建者源文件 通常是 stdafx cpp 然后编译该文件 C
  • 如何从不同的线程访问控件?

    如何从创建控件的线程以外的线程访问控件 避免跨线程错误 这是我的示例代码 private void Form1 Load object sender EventArgs e Thread t new Thread foo t Start p
  • 从内存流播放视频文件

    只是好奇看看这是否可能 我有一个 Windows 应用程序 它从我的电脑上的 avi 文件读取所有字节 然后将其存储在 byte 中 现在我的内存中有 avi 文件 我想直接从内存将其加载到某种视频播放器控件中 我尝试过使用 wmplaye
  • 如何调试.NET Windows Service OnStart方法?

    我用 NET 编写的代码仅在作为 Windows 服务安装时才会失败 该故障甚至不允许服务启动 我不知道如何进入 OnStart 方法 如何 调试 Windows 服务应用程序 http msdn microsoft com en us l
  • 原子存储抛出错误

    我最近升级到了 C 11 兼容编译器 并且尝试将一些代码从 boost 更新到 c 11 标准 我在使用atomic store转换一些代码时遇到了问题 这是一些简单的测试代码 似乎会引发编译器错误 int main std shared
  • 节点*链表中的下一个

    我是数据结构和算法的新手 我遇到了以下代码 typedef struct node int data node next 谁能告诉我为什么我们要声明节点 next next 不能声明为 int next 吗 因为你希望能够做到n gt ne
  • 使用 dateTimePicker 在 DataGridView 中编辑日期

    我有一个DateTime我的 WinForms 中的专栏DataGridView 目前只能通过手动输入日期来编辑该字段 例如 2010 09 02 需要什么才能拥有一个DateTimePicker 或同等 用作编辑器 DataGridVie
  • 意外的 const 引用行为

    include
  • 重命名 MongoDB 数组中嵌入文档中的字段不起作用

    Step One gt db myCollection find id ObjectId 2358523892345 field1 value 1 field2 subfield1 value 2 Subfield2 value 3 fie
  • 'iter' 的名称查找已更改为新的 ISO 'for' 范围

    我正在尝试编译下面的两个文件 但从编译器收到错误消息 gcc 4 3 3 Linux 错误位于带有以下符号的行 LINE WITH ERROR 我做错了什么 我该怎么改变 路易斯 g c b h b cpp b cpp In functio
  • C - 获取外部IP地址

    我需要通过 C C 调用获取我的公共 IP 地址 我知道作为替代方案 我可以从 http whatismyip akamai com 等外部链接获取 我写了一个示例来获取外部IP地址 但我的程序没有返回外部 IP 地址 我正在获取内部 IP
  • 如何通过代理将套接字连接到http服务器?

    最近 我使用 C 语言编写了一个程序 用于连接到本地运行的 HTTP 服务器 从而向该服务器发出请求 这对我来说效果很好 之后 我尝试使用相同的代码连接到网络上的另一台服务器 例如 www google com 但我无法连接并从网络中的代理
  • 如何通过API退出Win32应用程序?

    我有一个使用 Win32 API 编写的 C Win32 应用程序 我希望强制它在其中一个函数中退出 有没有类似的东西Exit or Destroy or Abort 类似的东西会终止它吗 哎呀呀呀呀呀呀 不要做任何这些事情 exit 和

随机推荐

  • 将 XML 资源传递给 XMLReader

    我正在尝试通过 xml文件来自我的res文件夹到XMLReader为了将其解析为对象 private void parseXML String parsedData try Log w AndroidParseXMLActivity Sta
  • 是否可以将 SDL2 与智能指针一起使用?

    我有这行代码 std unique ptr
  • strlen() 和 UTF-8 编码 [重复]

    这个问题在这里已经有答案了 假设UTF 8编码 PHP中的strlen 这个字符串的长度有可能是4吗 我只想了解 strlen 而不是其他函数 这是字符串 1 2 我在自己的电脑上测试过 验证了UTF 8编码 得到的答案是6 我在 strl
  • Client.ipa 不包含文件

    自从过去几天以来 我一直在为这个错误而烦恼 当我尝试提交基于 cordova 的 iOS 应用程序时 出现符号工具失败的错误 这是我的日志中的内容
  • nvcc 和 NVIDIA-smi 显示的不同 CUDA 版本

    我对运行时显示的不同 CUDA 版本感到非常困惑which nvcc and nvidia smi 我的 ubuntu 16 04 上安装了 cuda9 2 和 cuda10 现在我将 PATH 设置为指向 cuda9 2 所以当我跑步时
  • Android 列表视图中未显示顶部和底部分隔线

    按照我的理解 为列表视图定义的分隔线也应该出现在列表的顶部和底部 即第一个项目的上方和最后一个项目的下方 由于某种原因 它们没有出现在我的列表视图中
  • 出现错误:插件/预设文件不允许导出对象,只能导出函数

    我在使用 webpack 和 babel 设置我的 React 应用程序时遇到此错误 我尝试更改 babel 的版本 但仍然遇到相同的错误 我不明白问题出在哪里 ERROR in src index jsx Module build fai
  • 使用 Fluent NHibernate 执行 Sql 语句

    基本上我希望能够做到这一点 session ExecuteSql 我不需要它映射到任何实体或返回任何值 有什么建议么 正如已经提到的 这不是 Fluent NHibernate 问题 但这里有一个示例 public int GetSqlCo
  • 仅 CSS 中的上标?

    如何仅在 CSS 中完成上标 我有一个样式表 我用上标字符标记外部链接 但我很难正确对齐字符 我目前拥有的看起来像这样 a external after font size 50 vertical align top content 但它不
  • 参数允许包装泛型函数,但推断不允许

    当对函数参数使用推理时 如果不适用于实用程序类型参数 Typescript 会引发错误 举个例子 操场 https www typescriptlang org play code JYOwLgpgTgZghgYwgAgGLADaSgHgC
  • 如何每天下午 2 点运行 TimerTask?

    我想每天下午 2 点执行一项工作 哪种方法java util Timer我可以用它来安排我的工作吗 2 小时后 运行它将停止作业并重新安排到第二天下午 2 点 Calendar today Calendar getInstance toda
  • 如何识别4个方向的滑动?

    我需要识别各个方向的滑动 上下左右 不是同时 但我需要认出它们 I tried UISwipeGestureRecognizer Swipe UISwipeGestureRecognizer alloc initWithTarget sel
  • Spring - 使用 XSLT 的网页

    我是 XSLT 的新手 我知道将 XSLT 集成到 Spring Web 应用程序中的最佳解决方案是什么 我找到了简单的例子here http www java2s com Code Java JSP JSPXMLandXSLTtransf
  • glmer - 使用二项式数据进行预测(cbind 计数数据)

    我正在尝试预测在我的二项式数据上运行的 glmer 模型随时间的变化 x 轴中的天数 的值 Total Alive 和 Total Dead 是计数数据 这是我的模型 以及下面相应的步骤 full model dredge lt glmer
  • C# 扩展方法不允许通过引用传递参数吗?

    在 C 中创建一个将实例作为引用传递的扩展方法真的不可能吗 下面是一个 VB NET 控制台应用程序示例 Imports System Runtime CompilerServices Module Module1 Sub Main Dim
  • 如何使用 angularjs $http.delete() 请求发送数据?

    我有一个资源 角色 它与 用户 有多对多的关系 要管理 角色 我需要将角色 ID 和用户 ID 发送到服务器 以便它从正确的用户 不一定是登录用户 中删除角色 这是我正在尝试的 但根据docs http docs angularjs org
  • 将变量传递给工厂 angularjs

    我想将一个变量传递给我的工厂 但我不太确定如何做到这一点 这是我的代码 var app angular module docFinder app factory docFactory function http var url http t
  • 选择 XML 元素,无论 XPATH 的级别如何

    我有这个 a b b a
  • 如何使用 Node.js 最有效地解析网页

    我需要解析一个简单的网页并从 html 中获取数据 例如 src data attr 等 如何使用 Node js 最有效地完成此操作 如果有帮助 我正在使用 Node js 0 8 x 附 这是site http tunes io 我正在
  • 将代码添加到 C# 属性获取/设置而不需要支持字段?

    您知道如何拥有自动生成支持字段的属性吗 就像我去的话 public String SomeProperty get set 我知道 如果我想向该属性添加代码 我必须创建支持字段 如下所示 public string someProperty