c# - 具有空访问器的属性

标签 c# properties

虽然我当然熟悉自动属性,但我只是在工作中遇到过这个,这似乎是一个截然不同的野兽:

public SomeType SomeProp
{
  get
  {
    return someField;
  }
  set
  {
  }
}

我很惊讶它甚至编译了,我想这一定是一个错误:该属性似乎允许设置,但这样做绝对没有任何作用。

这个结构有什么用吗?是不是像电梯里的那些“关门”按钮,什么都不做,却让用户感觉很好?

最佳答案

为什么你不希望它编译?实际上,setter 只是一个只有一个参数的 void 方法。您可以轻松地完美地编写损坏的方法而不期望编译器注意到 - 属性也是如此。

我无法轻易想象任何情况下这是故意的,但是,除了“部分”实现 - 例如演示语言功能,或者如果您正在测试某些确实设置了属性,但您不关心测试将其设置为什么。 (我个人通常至少会记录该属性已设置。)

关于c# - 具有空访问器的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8883797/

相关文章:

c# - foreach(... in ...) 或 .ForEach();就是那个问题

c# - 通过应用程序洞察中的端到端事务跟踪 azure redis

c# - DataGrid 显示图像的路径而不是图像本身

ios - 访问在几个不同的可能类中设置的 BOOL 标志

c# - 为什么允许我修改对象初始值设定项只读的属性?

python - 如何初始化从Python类中的其他属性计算得到的属性

c# - 为什么我的 Web 应用程序编译但抛出 Type 'BitmapImage' is not defined。调试时出错?

c# - 无法更新 MSI 安装的 Windows 服务

java - 如何在 .properties 文件中引用另一个项目

ios - 设置一个对象属性以匹配另一个