C# 哪种方法更好?是否在没有参数或返回数据的情况下作废?

C# 哪种方法更好?是否在没有参数或返回数据的情况下作废?,c#,methods,C#,Methods,我很好奇是否有更好的方法来解决我的问题。基本上,我有一些数据(它是xml),我需要修改数据以添加一些属性。为此,我写了一个方法来为我做到这一点。之后我需要使用修改过的数据。该方法是否应返回void或所需的数据类型 选项1: var someData = GetTheData(); someData = ModifyTheData(someData); var someData = GetTheData(); ModifyTheData(someData, out someData); 选项2

我很好奇是否有更好的方法来解决我的问题。基本上,我有一些数据(它是xml),我需要修改数据以添加一些属性。为此,我写了一个方法来为我做到这一点。之后我需要使用修改过的数据。该方法是否应返回void或所需的数据类型

选项1:

var someData = GetTheData();
someData = ModifyTheData(someData);
var someData = GetTheData();
ModifyTheData(someData, out someData);
选项2:

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

有没有更好的方法?没什么大不了的,我只是好奇而已

非常感谢

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

这取决于
ModifyTheData
方法的实现,以及某些数据的类型是引用类型还是值类型。如果仅将
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";
}
同:

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

我希望尽可能避免输出参数。

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

我总是避免在方法中赋值,对我来说,返回的值更清晰。我更喜欢
someData=ModifyTheData(gethedata())相反,无需创建额外的临时变量,更适合解释语言,易于使用,单步,小代码。代码分析警告的“重复”感谢大家,并为链接+1返回
void
欢呼,这可能是被称为“ModifyTheData”的函数最诚实的选择(假设它修改了“数据”)很好,谢谢。我喜欢你的上一个版本,可能会用到。干杯