哪种方法更好?没有参数或返回数据?

时间:2013-07-26 07:50:43

标签: c# methods

我很好奇是否有一个解决我问题的首选方法。基本上,我有一些数据(它是xml),我需要修改数据,添加一些属性,让我们说。为此,我写了一个方法来为我做。然后我需要稍后使用修改后的数据。该方法应该返回void还是所需的数据类型?

选项1:

var someData = GetTheData();
someData = ModifyTheData(someData);

选项2:

var someData = GetTheData();
ModifyTheData(someData, out someData);

使用这两个版本有什么区别吗?我是否正确认为选项1将在内存中创建2个实例(1表示someData变量,1表示方法的返回值)但是选项2只有1个实例?

有首选方法吗?没关系太多,我只是好奇

非常感谢

2 个答案:

答案 0 :(得分:5)

  

我认为选项1会在内存中创建2个实例(1表示someData变量,1表示方法的返回值),但是选项2只有1个实例吗?

这取决于ModifyTheData方法的实现以及someData的类型是引用还是值类型。如果只将out变量分配给第一个参数,如果someData是引用类型,则它们都是等效的:

public void ModifyTheData(SomeData someData, out SomeData data)
{
    someData.Foo = "bar";
    data = someData;
}

与:

相同
public SomeData ModifyTheData(SomeData someData)
{
    someData.Foo = "bar";
    return someData;
}

与:

相同
public void ModifyTheData(SomeData someData)
{
    someData.Foo = "bar";
}

答案 1 :(得分:2)

我想尽可能避免参数。
在您的情况下,我认为最好返回修改后的数据。它更具可读性和更全面。