修改成员时不调用 C# 对象 Setter

2024-01-10

我有以下包装类:

public class Wrapper
{
    public int Member;
}

在一个单独的班级中,我有以下内容:

public class ContainerClass
{
    private Wrapper data;
    public Wrapper Property
    {
        get { return data; }
        set { data = value; }
    }

    public void Foo()
    {
        Property.Member = 42;
    }
}

When Property.Member被修改为Foo(),什么也没有发生(setter 被跳过)。但是,我仍然可以执行以下操作,例如:

    public void Foo()
    {
        Property = Property;
    }

并输入所需的设置器。所以我的问题是,为什么修改对象属性的成员不调用该属性的设置器?


因为您没有修改引用。您正在修改引用的成员。

举例来说,如果我让你站在房间的角落里并说:“拿着这个苹果”。如果我进来把苹果换成香蕉……我没有换你,所以你很高兴。但如果我把你换成其他人,你就会抱怨我取代了你。

..无论如何,这就是我的比喻。

另外,您还为类添加了前缀I..这通常用在 .NET 领域的接口上。

编辑:我意识到,如果我让你拿着一块水果站在角落里..当我取代你时你可能不会抱怨..

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

修改成员时不调用 C# 对象 Setter 的相关文章

随机推荐

  • CSS 第一次在 3D 变换时不渲染背面

    我有一个卡片翻转风格的动画 可以将文本区域翻转 180 度 我遇到的唯一问题是 第一次执行翻转时 在经过 90 度后 元素消失 然后在完成 180 度旋转后出现后面的元素 这是带有代码的示例 http jsfiddle net elninj
  • 阻止用户删除 BigQuery 表

    我们正在尝试创建一个非常基本的角色 允许用户查询 BigQuery 表 但不能删除它们 我们正在试验的自定义角色现在具有以下权限 bigquery jobs create bigquery jobs get bigquery jobs li
  • 如何清除 Selectize.js 下拉列表中的选定值?

    我有一个selectize js https selectize github io selectize js 下拉菜单 我必须清除所选值 我已经尝试过这个 如建议的另一个问题 https stackoverflow com questio
  • Nexus 10 Camera.release 挂起 30 秒

    我们是一群正在开发 Android 实时视频处理应用程序的开发人员 最近 一位客户报告我们的应用程序出现冻结 这种情况仅发生在 Nexus 10 设备上 我们自己购买了设备并进行了测试 设备预装了 Android 4 2 我们的应用程序没有
  • 如何将带有 alpha 的 PNG 转换为 RGBA4444 以便在 SpriteKit SKTexture 中使用?

    我有一堆透明 PNG 我想在SKSpriteNode动画与SKTextures 我需要调整内存使用情况SKTextures 通过降低纹理质量RGBA8888 to RGBA4444 我将如何初始化SKTexture with RGBA444
  • 带有子类的构造函数中的 Object.freeze

    如果我希望我的类不可变 我知道我可以使用Object freeze 现在 如果我希望我的对象在构造后不可变 我会放Object freeze this 作为最后一行进入我的构造函数 但现在 如果我想子类化它 我无法添加更多参数 因为我无法调
  • 在 React.js 中检索复选框的值

    我想在选中复选框时检索它的值 我正在使用这个 http react component github io checkbox http react component github io checkbox 我的代码看起来像这样 div ch
  • 如何设置密码最小长度

    我目前正在制作 html 表单 如何将密码的最小长度设置为8 以便拒绝用户输入小于8的密码 如何做到这一点 这是代码 div div
  • 使用 mvcmailer 发送多封电子邮件

    我想使用MVC邮件程序 https github com smsohan MvcMailer wiki MvcMailer Step by Step Guide使用 asp net mvc 3 和 razor 发送电子邮件 还提到过Scot
  • 如何在 postgresql 中将 DELETE 的返回插入到 INSERT 中?

    我正在尝试从一个表中删除一行并将其与一些附加数据插入到另一个表中 我知道这可以通过两个单独的命令来完成 一个用于删除 另一个用于插入新表 然而我试图将它们结合起来但它不起作用 这是我到目前为止的查询 insert into b one tw
  • Django - 基于函数的视图 (FBV) 不允许使用方法

    我得到了405 METHOD NOT ALLOWED当我尝试通过 AJAX 调用提交 POST 请求时的响应 POST events profile update HTTP 1 1 405 0 我试图用最基本的视图来设置它 def prof
  • 重写抽象类以返回硬编码方法值

    我想从这里覆盖 CoreUtils 抽象类https docs spring io spring framework docs current javadoc api org springframework web cors reactiv
  • Laravel 路由重定向而不关闭路由缓存

    我的电脑上有这个代码routes php执行重定向的文件 虽然问题是每当我跑步时php artisan route cache命令 它给了我一个错误Unable to prepare route article params for ser
  • 用于网络请求的 AsyncTask 与 ThreadPoolExecutor

    我正在开发一个项目 我需要点击 Web 服务下载 JSON 数据并将其表示在列表中 所有列表项都有缩略图 URL 可以下载并显示在列表项中 我已经使用 ThreadPoolExecutor 和 AsyncTask 完成了整个调用部分 但从设
  • 在 Spring Batch 中访问步骤范围之外的 Bean

    是否可以访问步骤范围之外定义的 bean 例如 如果我定义策略 strategyA 并将其传递到作业参数中 我希望 Value 解析为strategyA bean 这可能吗 我目前正在通过从 applicationContext 手动获取
  • NPM Start 未启动本地服务器

    我正在尝试使用 webpack 制作一个 React 应用程序 当我尝试运行 npm start 时 它应该加载http localhost 3333但它说无法访问网站 这是我的 webpack 配置 module exports entr
  • 滑动视图控制器,但不使用 UISwipeGestureRecognizer

    这是我的问题 我有 5 个视图控制器 我可以使用 UISwipeGestureRecognizer 类和 xcode 的故事板通过滑动在它们之间切换 所以这可行 但是 我不喜欢幻灯片效果 我喜欢以某种方式进行制作 这样您就可以通过拖动将视图
  • Windows IoT 和 DS3231 RTC 时钟

    对于我的项目 我需要当前时间和日期 不幸的是 当 RP2 关闭时 它就会失去一切 接下来的事情是 我将没有互联网连接来使用 NTP 为此 我需要实现 DS3231 RTC 模块 所有设备的通信都通过 I2C 运行 Raspberry Ard
  • Google Admob Android:仅在一台设备上运行

    我在我的 Android 应用程序中设置了一个 admob adview 清单
  • 修改成员时不调用 C# 对象 Setter

    我有以下包装类 public class Wrapper public int Member 在一个单独的班级中 我有以下内容 public class ContainerClass private Wrapper data public