我要實(shí)現(xiàn)一個(gè)功能,用C++表達(dá)如下:
int g_iTest = 0; // 全局變量
class A
{
A(int* pVal){m_pVal = pVal;} //將指針記錄下來
void Increase(){(*m_pVal)++;}
}
//
A a(&g_iTest);
a.Increase(); //會(huì)改變g_iTest的值 換句話說,我想保存一個(gè)int的引用,對(duì)這個(gè)成員int的操作就是對(duì)那個(gè)全局int的操作,這樣的功能,如何用C#來實(shí)現(xiàn)?
由于int是值傳遞,所以沒辦法保存這個(gè)“引用”。
我開始嘗試使用unsafe的指針,但當(dāng)我對(duì)System.Drawing.Color取址的時(shí)候,居然出現(xiàn)CS0208編譯錯(cuò)誤。納悶。
然后嘗試使用裝箱/拆箱的方法來傳遞一個(gè)object來實(shí)現(xiàn),但A(object val)這樣的構(gòu)造函數(shù)確實(shí)太不美觀,光看這個(gè)構(gòu)造函數(shù),誰知道A想要的是個(gè)整型?
最后……唉,自己弄了個(gè)MyInt。
寫MyInt的時(shí)候,我第一想到的就是類似C++的自動(dòng)類型轉(zhuǎn)換,使得我可以自由無礙地把整型“賦值”給MyInt,反之亦然,但我發(fā)覺C#的類型轉(zhuǎn)換運(yùn)算符重載函數(shù)居然必須是static的,完全沒用。
最最后……先將就著吧。