通过引用传递:哪个更具可读性/更正确?

Ian*_*Ian 9 c# coding-style design-guidelines

我有以下课程:

public class Person
{
     public String Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我有一个接受的方法Person和一个Stringas参数:

public void ChangeName(Person p, String name)
{
     p.Name = name;
}
Run Code Online (Sandbox Code Playgroud)

由于Person通过引用传递,它应该更改Name传递的实例.

但这种方法比上面的方法更具可读性吗?

public Person ChangeName(Person p, String name)
{
     p.Name = name;
     return p;
}
Run Code Online (Sandbox Code Playgroud)

Cor*_*old 12

它更具可读性吗?不,实际上你可能会对他们造成更大的伤害.

通过让它返回一个Person对象,它可能会让你相信,而不是修改Person参数,它实际上是基于p创建一个新的Person但具有不同的名称,有人可能错误地认为p永远不会改变.

无论哪种方式,如果你有一个对类没有影响的方法,它应该是静态的.这有助于您确定它不会影响其课程.只有方法返回一个值,如果需要它返回一个值.

所以这是我对这种方法的建议:

public static void ChangeName(Person p, String name)
{
    p.Name = name;
}
Run Code Online (Sandbox Code Playgroud)