Can*_*ate 15 .net c# struct pass-by-reference
你好,我很难搞清楚这一点.我有这些结构和类.
struct Circle
{ ... }
class Painting
{
List<Circle> circles;
public List<Circle> circles
{
get { return circles; }
}
}
Run Code Online (Sandbox Code Playgroud)
我试图使用以下代码从外部修改绘画类中的一个圆圈:
MutatePosition(ref painting.Circles[mutationIndex], painting.Width, painting.Height);
Run Code Online (Sandbox Code Playgroud)
这行给了我一个编译器错误:
属性,索引器或动态成员访问不能作为out或ref参数传递
为什么会这样,如果不过多地改变我的代码,我该怎么做才能解决它?
Ree*_*sey 33
错误很明显 - 您无法将属性传递给方法的ref参数.
你需要做一个临时的:
var circle = painting.Circles[mutationIndex];
MutatePosition(ref circle, painting.Width, painting.Height);
painting.Circles[mutationIndex] = circle;
Run Code Online (Sandbox Code Playgroud)
话虽这么说,可变结构通常是一个坏主意.您可能想要考虑将其设为类而不是结构.
| 归档时间: |
|
| 查看次数: |
29016 次 |
| 最近记录: |