【发布时间】:2017-02-16 20:35:50
【问题描述】:
我在各个地方都看到过以下代码:
namespace My.name.space
{
class myClass
{
public CustomObject Name
{
get { return new CustomObject (this.Dog); }
set { return; }
}
}
}
set { return; }的目的是什么?
我不明白 set return 的用途。
我认为您可以完全删除 set 访问器。
【问题讨论】:
-
无操作
set允许尝试将属性设置为编译,然后静默失败。如果你对你的雇主怀恨在心,而你刚刚被解雇,也许这是有道理的。如果财产是虚拟的,可能会有一些意义,但我仍然不喜欢它。return仅用于打字练习。 -
return;可以省略。无论如何,设置方法都是无效的。 -
作为一个密切相关的,我认为这段代码应该是一个方法而不是一个属性,根据这些MSDN Guidelines:“Do use a method (if) ... 操作返回不同的结果每次调用它,即使参数没有改变”。我觉得“空”设置器是程序员说,“嘿,'设置'任何东西都没有意义,因为'get'每次都会返回一个新对象”,但这只是代码味道首先它不应该是一个属性。
-
@Quantic 有一个很好的观点——尽管也可能是该类应该保留一个私有的
CustomObject字段,当Dog的值发生变化时该字段会更新;在这种情况下,Name将是一个返回该字段的属性。当然,如果您在旧代码库的一个尘土飞扬的角落发现它并且它没有主动导致任何问题,那么它可能不是一轮回归错误轮盘的高优先级。 -
如果您对某个问题投了反对票,请留下理由。