为什么使用空的 get set 属性而不是使用公共成员变量? [复制]

2024-02-25

可能的重复:
C#:公共字段与自动属性 https://stackoverflow.com/questions/1180860/c-public-fields-versus-automatic-properties

复制?我想不是:
这个问题是not与“为什么 使用属性而不是公共 字段”。具有指定的属性 getter 和 setter 有很大不同 比公共领域。我的问题是, 是一个财产WITHOUT吸气剂和 设置器,任何不同。

最近有了空 getter 和 setter 的能力,使用它们而不是仅仅声明一个公共成员变量有什么好处?

Example:

public string MyProperty
{
    get;
    set;
}

versus:

public string MyProperty;

一个字:继承。

属性是可继承的,而字段则不可继承。您可以在继承类中使用字段,但不能通过将它们设为虚拟来改变它们的行为。

Like so:

public class Foo {
  public virtual int MyField = 1; // Nope, this can't

  public virtual int Bar {get; set; }
}

public class MyDerive : Foo {
  public override MyField; // Nope, this can't

  public override int Bar {
    get {
      //do something;
    }
    set; }
}

编辑:除了继承的事实之外,其他答案中指出的点(例如可见性)也是属性相对于字段的巨大好处。

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

为什么使用空的 get set 属性而不是使用公共成员变量? [复制] 的相关文章

随机推荐

  • 检查显示器是否已连接

    我必须制作一个简单的程序 向服务器报告显示器的状态 是开 关还是只是未连接 到目前为止 我正在使用在另一个讨论中找到的这种方法 但它每次都会返回 true 即使我已经断开了显示器的连接 public static Boolean isMon
  • getJSON 同步

    目标 我所追求的是每次在数据库中添加某些内容时 在 ajax 到 Submit to db php 之后 从数据库获取数据并刷新 main php 通过 draw polygon 更明显 所以基本上我有一个main php 它将ajax调用
  • 数据表在编辑后不记得分页页面

    我一直在使用 DataTable 服务器端处理 我的数据表有编辑列 当编辑链接时 单击 jQuery 对话框将出现 提交后对话框将关闭并调用 ajax reload 但是 当我在分页中执行此操作时 如果我在 ajax reload 之后在第
  • AS3 功能点击按钮后开始下载!

    我的网站需要一个 ActionScript 3 函数 让人们在单击按钮后下载文档 在网上任何地方都找不到这个 谢谢 詹妮弗 文件参考 下载 http livedocs adobe com flash 9 0 ActionScriptLang
  • 使用 64 位包编译 32 位 Qt 应用程序

    我使用的是 Windows 8 64 位 Qt 5 0 2 for Windows 64 位和 Visual Studio 2012 我在 64 位操作系统上编译和运行我的应用程序没有遇到任何问题 但显然它不适用于 32 位操作系统 有没有
  • 如何使用 JWT 为 Google firebase 生成身份验证令牌?

    所以我正在努力对 Firebase REST API 进行身份验证 https firebase google com docs database rest auth我正在使用蒸气框架 https vapor codes对于服务器端 swi
  • 存储过程中关键字 '.未闭合引号附近的语法不正确

    我有 2 个表和 2 个存储过程 在这两个存储过程中 我有相同的插入数据代码 从一个存储过程中 我在插入相同数据时收到错误 信息 Testing is going on Let s find out it 我将一个值从 C 代码隐藏直接传递
  • Polars的replace_time_zone函数抛出“没有这样的当地时间”的错误

    这是我们要使用的测试数据 import polars as pl import pandas as pd from datetime import date time datetime df pl DataFrame pl date ran
  • 带命名空间的 PHPUnit getMock()

    我对开始在 PHP 中使用名称空间的追求仍在继续 这次 PHPUnit 给我带来了问题 我的 setup 方法是这样的 test new MyNamespace NonPersistentStorage works mock this gt
  • 将多种日期格式解析为单一格式

    我有一个名为 已发布 日期 的专栏 正如您所看到的 它有多种日期格式和 nan 值 我想跳过 nan 值 将所有其他格式转换为 Y d 并忽略具有唯一年份的格式 我尝试了 df publish time pd to datetime df
  • 为什么Python语言没有writeln()方法?

    如果我们需要向文件写入新行 我们必须编写以下代码 file output write Fooo line n Python 没有任何原因吗 writeln method 在 Python 2 中 使用 print gt gt file ou
  • 使用 jQuery ajax 提交表单

    表单未使用 ajax form 在单击 li 时提交 给我一些解决方案 我的js代码在这里 document ready function sortable li click function frmgallery submit funct
  • 我可以使用 WiX 设置自定义许可证吗?

    WiX 生成的 MSI 的默认许可证是通用公共许可证 如何将其更改为 GPLv2 The Wix变量 http wix sourceforge net manual wix3 wix xsd wixvariable htm XML元素 ht
  • 使用 C# 从完整结果集变量获取数据到脚本任务

    我需要使用脚本任务将数据从 SQL 任务获取到 DataTable 对象以生成电子邮件 但是当我尝试使用 OLEDB 适配器填充任务填充数据时 它会生成错误 OleDbDataAdapter 内部错误 行集访问器无效 Ordinal 1 S
  • 从列中的字符串中去除空格

    我正在使用Pythoncsvkit比较 2 个文件 如下所示 df1 pd read csv input1 csv sep s delimiter encoding utf 8 df2 pd read csv input2 csv sep
  • 我怎样才能看到我的delphi应用程序当前使用了多少堆栈空间?

    我怎样才能看到我的delphi应用程序当前使用了多少堆栈空间 我曾有一个very奇怪的错误听起来像是堆栈问题 我想将其添加到我的应用程序日志中 以了解正在使用 剩余的堆栈空间有多少 使用调试器可能不太好 因为可以多次调用例程 谢谢你 这应该
  • IA-64 中的“GP/功能地址对”是什么意思?

    GP 函数地址对 是什么意思安腾 C ABI http mentorembedded github io cxx abi abi html member pointers GP 代表什么 简短说明 gp对于所有实际方法来说 它是所有符合 I
  • 在 PHPStorm 中重命名文件而不重构

    如何快速重命名文件名无需重构在 PHPStorm 中 即使在我刚刚创建文件之后 PHPStorm 也会花费很长时间来搜索我的文件以了解其使用情况 我快速重命名文件的技术是单击文件名并按Shift F6 将打开一个对话框 您可以立即键入文件的
  • 分析数据库模式需要几个小时

    在VS2010中使用一个新的SQL2005数据库项目 我确实导入了对象和设置 并构建了项目 它似乎停留在 分析数据库模式 3267 次操作完成后 您的数据库项目将准备就绪 这似乎需要几个小时 有什么办法可以加快这个速度吗 我在某处读到 如果
  • 为什么使用空的 get set 属性而不是使用公共成员变量? [复制]

    这个问题在这里已经有答案了 可能的重复 C 公共字段与自动属性 https stackoverflow com questions 1180860 c public fields versus automatic properties 复制