修改对象的 C# 静态方法



想象一下这样的事情...

public class Result
{
public string Name {get; set;}
public int Score {get; set;}
public bool Pass {get; set;}
}

还有一个静态方法...

public static Result SetPass(this Result result)
{
result.Pass = result.Score > 50;
return result;
}

我的问题是我是否必须返回结果或它已经修改到位?我可以使返回类型无效,然后遍历一组结果并像这样就地修改吗......

foreach (var result in results)
{
result.SetPass();
}

还是需要返回结果对象并重新分配?

由于Result是一个,因此它目前在单个对象上被修改 - 基本上是就地的;这是按值传递引用。因此,在这里使用返回值是没有意义的。

如果Result是一个结构体,则需要返回一个新值,或者使用(ref this Result result)(使其按引用传递值(;请注意,编译器在这种情况下是宽松的,并允许在这种情况下隐式使用ref(ref通常需要在调用方和被调用方都显式使用(。

最新更新