我基本上需要一个对值类型内部的私有值类型的引用.
我有以下 struct :
public struct someStruct
{
public enum Type { AA = 0, BB = 1, CC = 1 } //this was because i first wanted to change
//the switch with an array of refs but that
//also does not work in c#
int a;
int b;
int c;
public int GetTypeStrength(Type type)
{
switch (type)
{
case Type.AA: return a;
case Type.BB: return b;
case Type.CC: return c;
default: return 0;
}
}
}
但我想将GetTypeStrength重写为类似以下内容:
public int GetTypeStrength(Type type)
{
return Get(type)
ref int Get(Type type)
{
switch (type)
{
case Type.AA: return ref a;
case Type.BB: return ref b;
case Type.CC: return ref c;
default: /*throw exception*/;
}
}
为了更好地编写更多方法, 但由于 struct 的原因,我不能返回引用. 此外,我还找到了使用扩展方法解决此问题的方法,但使用该方法时,我需要使字段成为公共的,从而打破封装,除非像Friend关键字这样的东西存在,但从我所了解的情况来看,它在C#中不存在.
那么,有没有办法让这件事奏效呢? 我正在使用unity,它需要在每一帧中被调用多次,所以反射不是一个选项.
[编辑] 下面是我想补充的一个例子:
public static someStruct operator +(someStruct sstr, Type type)
{
sstr.Get(type)++;
return sstr;
}