传入将要修改为方法的对象时,有没有办法表明这一点?

Nib*_*Pig -1 c#

我有一个对象,它被传递给一个要改变的方法.这种行为似乎非常罕见,所以我想确保其他开发人员不会绊倒它并且很容易看到.有什么我可以做的,以明确发生了什么?

该方法调整对象的某些属性,但不返回对象.也许应该归还呢?

myObject = Processor(myObject); 会多余,但会更清楚......?

我唯一能想到的就是ref在界面中添加它,但不确定这是不是一个好主意.有任何想法吗?

Jon*_*eet 7

不,返回相同的引用并不能使它更清晰 - 在某些情况下,这种方法可能会克隆对象并返回不同的版本,例如

string Escape(string input)
Run Code Online (Sandbox Code Playgroud)

实际上,因为一种void方法不能返回任何东西,它的存在几乎可以保证会产生副作用.它没有说明副作用是在呼叫的目标上还是在参考上,但至少它隐含地强调你应该考虑副作用是什么.返回值的方法很容易没有副作用.

同样使用ref也是错误的 - 这表明您希望能够更改调用者的变量以引用不同的对象,这与修改现有对象中的数据绝不相同.它给人的印象是错误的.

最终,有两种方法:

  • 首先没有可变类型:)
  • 依靠方法命名和文档