我很好奇是否有一个解决我问题的首选方法。基本上,我有一些数据(它是xml),我需要修改数据,添加一些属性,让我们说。为此,我写了一个方法来为我做。然后我需要稍后使用修改后的数据。该方法应该返回void还是所需的数据类型?
选项1:
var someData = GetTheData();
someData = ModifyTheData(someData);
选项2:
var someData = GetTheData();
ModifyTheData(someData, out someData);
使用这两个版本有什么区别吗?我是否正确认为选项1将在内存中创建2个实例(1表示someData变量,1表示方法的返回值)但是选项2只有1个实例?
有首选方法吗?没关系太多,我只是好奇
非常感谢
答案 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)
我想尽可能避免参数。
在您的情况下,我认为最好返回修改后的数据。它更具可读性和更全面。