我要實現(xiàn)一個功能,用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#來實現(xiàn)?
由于int是值傳遞,所以沒辦法保存這個“引用”。
我開始嘗試使用unsafe的指針,但當(dāng)我對System.Drawing.Color取址的時候,居然出現(xiàn)CS0208編譯錯誤。納悶。
然后嘗試使用裝箱/拆箱的方法來傳遞一個object來實現(xiàn),但A(object val)這樣的構(gòu)造函數(shù)確實太不美觀,光看這個構(gòu)造函數(shù),誰知道A想要的是個整型?
最后……唉,自己弄了個MyInt。
寫MyInt的時候,我第一想到的就是類似C++的自動類型轉(zhuǎn)換,使得我可以自由無礙地把整型“賦值”給MyInt,反之亦然,但我發(fā)覺C#的類型轉(zhuǎn)換運算符重載函數(shù)居然必須是static的,完全沒用。
最最后……先將就著吧。