所以我有一个这样的结构:
public struct Attributes {
public int vitality;
public int intelligence;
public int dexterity;
public int agility;
}
我像这样使用它:
Attributes a = new Attributes();
Attributes b = new Attributes();
我想实现的是:
Attributes c = new Attributes();
c = a + b;
我希望这给我这两个Attributes上面指定的这4个变量的总和。
在结构中,我试图拥有这个:
public static Attributes operator +(Attributes x, Attributes y) {
PropertyInfo[] info = typeof(Attributes).GetType().GetProperties();
for (int i = 0; i < info.Length; i++) {
info[i].SetValue(x, (int) info[i].GetValue(x) + (int) info[i].GetValue(y), null);
}
return x;
}
这显然不起作用,给我一个错误。
你们能帮我这个忙吗?我该怎么做才能实现自己想要的?谢谢。
只需使用以下内容:
public static Attributes operator +(Attributes x, Attributes y) {
return new Attributes
{
vitality = x.vitality + y.vitality,
intelligence = x.intelligence + y.intelligence,
dexterity = x.dexterity+ y.dexterity,
agility = x.agility + y.agility
};
}
如果没有必要,则无需花哨并使用反射。这是一个功能强大的工具,但请不要误入歧途。仅在确实需要时使用它。