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

Rod*_*ers -1 c# methods

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

选项1:

var someData = GetTheData();
someData = ModifyTheData(someData);
Run Code Online (Sandbox Code Playgroud)

选项2:

var someData = GetTheData();
ModifyTheData(someData, out someData);
Run Code Online (Sandbox Code Playgroud)

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

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

非常感谢

Dar*_*rov 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;
}
Run Code Online (Sandbox Code Playgroud)

是相同的:

public SomeData ModifyTheData(SomeData someData)
{
    someData.Foo = "bar";
    return someData;
}
Run Code Online (Sandbox Code Playgroud)

是相同的:

public void ModifyTheData(SomeData someData)
{
    someData.Foo = "bar";
}
Run Code Online (Sandbox Code Playgroud)