-1

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

选项1:

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

选项 2:

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

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

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

非常感谢

4

2 回答 2

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";
}
于 2013-07-26T07:53:39.783 回答
2

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

于 2013-07-26T07:53:56.947 回答