是修改输入参数并使其返回错误的方法吗?

时间:2014-12-07 17:22:53

标签: c#

我有以下代码:

public class MyClass
{
        ....
}

public static MyClass MyClassModifier(MyClass myinstance)
{

  ......
 return myinstance;
}

在我看来,返回myinstance实际上并没有在这里做任何事情,换句话说,这与上面的代码完全相同(只要myinstance没有分配给方法中的另一个对象):

public static void MyClassModifier(MyClass myinstance)
{

  ......

}

我当然可以这样做:

public static MyClass MyClassModifier(MyClass myinstance)
{

  ......
  return new MyClass();
}

但这看起来很笨重,如果MyClass的构造函数有很多参数,那么这就变得非常笨重了,那么问题是,哪一个更好,为什么?

从功能编程的角度来看,最后一个似乎是要走的路,但我不确定这是最好的方法。

1 个答案:

答案 0 :(得分:2)

  

是修改输入参数并将其返回错误的方法吗?

是。它们具有误导性 - 客户端会假设您的方法读取输入参数,创建一个新对象并返回它。事实上,这不是正在发生的事情。返回值输入值,客户端无需捕获它。

关于你的第二个问题,无论你是应该改变输入值还是创建新的输入值,答案在很大程度上取决于你想要实现的目标。没有任何背景,不可能给你一个更好的答案。

  

从功能编程的角度来看,最后一个似乎是要走的路,但我不确定这是最好的方法。

是的,在函数式编程中,您需要不可变状态 - 这意味着MyClass无法修改,因此您必须返回它的新实例。