解释我的问题的最好方法是使用代码片段:
enum Resource { ..., Size }
class ResourceVector
{
int[] values = new int[(int)Resource.Size];
public static ResourceVector operator + (ResourceVector a, ResourceVector b)
{...}
...
}
我们在任何地方都使用这种类型,就好像它是一种值类型。即我们假设:
ResourceVector b = a;
b += c;
不会影响a
,因为这就是我们习惯谈论向量的方式(如果作为结构实现,具有固定数量字段的向量的行为方式也是如此)。
然而,由于这个假设是错误的,它导致了一些极其微妙的错误。
我想知道是否有一种方法可以使其表现为值类型,而不仅仅是将Resource
每个成员扩展为它们自己的成员 a (如果我们希望添加另一个,则struct ResourceVector
需要触摸每个成员)。ResourceVector
Resource
哦,以防万一,我们正在使用 C# 2.0。所以没有花哨的功能:-)
谢谢。