1. 程式人生 > >C#實現類似C++功能的困惑

C#實現類似C++功能的困惑

我要實現一個功能,用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的,完全沒用。

最最後……先將就著吧。