c# - 修改对象的 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;
}
我的问题是我必须返回结果还是已经修改到位?我可以将返回类型设为 void,然后遍历结果集合并像这样修改......
foreach (var result in results)
{
result.SetPass();
}
还是我需要返回结果对象并重新分配?
解决方案
由于Result
是一个类,它目前是在单个对象上修改的——基本上就地;这是按值传递引用。因此,这里没有返回值。
如果Result
是struct ,则需要返回一个新值或使用(使其通过引用传递值);请注意,在这种情况下编译器是宽松的,并允许在这种情况下隐式使用 (通常需要在调用者和被调用者中都显式)。(ref this Result result)
ref
ref
推荐阅读
- c# - 发生无效服务器实例异常:没有安装节点!请通过 NPM 安装 node 或下载并安装 Appium
- vb.net - 按字母顺序对目录路径进行排序
- python-3.x - python selenium的wait.to_be_clickable()方法不能立即点击
- javascript - 采取行动时,Express POST 路线未打开
- java - 如果用户登录,Log4j2 添加到布局
- ansible - 基于组名的ansible复制文件
- python - 修改 ROI,然后使用 python 将其添加到原始图像中
- python - 当列接收相同的值时 panada.crosstab 不创建方表
- ios - UIWebView 已弃用警告
- firebase - flutter with firebase - 检测 url 字符串是图像(jpg)还是视频(avi)