我要实现一个功能,用C++表达如下:
int g_iTest = 0; // 全局变量
class A
{
A(int* pVal){m_pVal = pVal;} //将指针记录下来
void Increase(){(*m_pVal)++;}
}
//
A a(&g_iTest);
a.Increase(); //会改变g_iTest的值 换句话说,我想保存一个int的引用,对这个成员int的操作就是对那个全局int的操作,这样的功能,如何用C#来实现?
由于int是值传递,所以没办法保存这个“引用”。
我开始尝试使用unsafe的指针,但当我对System.Drawing.Color取址的时候,居然出现CS0208编译错误。纳闷。
然后尝试使用装箱/拆箱的方法来传递一个object来实现,但A(object val)这样的构造函数确实太不美观,光看这个构造函数,谁知道A想要的是个整型?
最后……唉,自己弄了个MyInt。
写MyInt的时候,我第一想到的就是类似C++的自动类型转换,使得我可以自由无碍地把整型“赋值”给MyInt,反之亦然,但我发觉C#的类型转换运算符重载函数居然必须是static的,完全没用。
最最后……先将就着吧。