想象这样的事情...
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
是class,因此当前在单个对象上进行了修改-本质上是原地;这正在传递reference值。因此,这里没有返回值的点。
如果Result
是一个结构,则需要任一返回一个新值,或使用(ref this Result result)
(使其通过引用传递值);请注意,在这种情况下,编译器比较宽松,并且允许ref
在这种情况下隐式使用(ref
通常在调用方和被调用方都必须是显式的)。