void Afunction(int* outvar)
{
if(outvar)
*outvar = 1337;
}
注意的質量:它允許您可選地通過引用傳遞變量,以便它可以由函數設置。什麼是相當於通過地址在C#
我最親密的猜測是(裁判中斷?outvar)
但產生REF(INT?)NOT(REF INT)?這是我需要的
這個功能幾乎不是c或C++的一個很少使用的特性,所以我認爲必須有一些等價的? 編輯: 所以讓我嘗試一個很好的例子,我認爲Colision檢查函數是一個主要的例子,其中主要測試是兩個對象是否接觸,然後是投影向量的可選輸出,計算投影向量需要額外的時間,所以如果他們想要的話,你只想做它,另一方面,它通常會使用大量的計算信息進行碰撞測試。
bool Collide(colObject obj1, colObject obj2, Vector3* projection)
{
//do a bunch of expensive operations to determine if there is collision
if(!collided)return false;
if(projection != NULL)
{
//do more expensive operations, that make use of the above operations already done,
//to determine the proj vect
*proj = result;
}
return true;
}
請注意,我只是目前移植的C++代碼到C#,所以我可能沒有,雖然任何真正的「開箱即用」解決方案
你期待ref(int?)和(ref int)之間的行爲差異是什麼? – 2010-07-16 02:00:00
也許如果你描述你正試圖解決的問題,可能會有一個更明顯的c#py解決方案。現在看起來你正在試圖讓c#適合C++編程範例。 – 2010-07-16 02:07:16
我明白'ref'並不是真正的類型修飾符嗎?是,但理想情況下,我想要一個?包含對int的引用的類型,而不是對?的引用。包含一個int的類型,所以我可以實現上面提到的功能,我基本上希望能夠通過引用傳遞,但也能夠通過'null'使參數可選,就像你使用?類型mod。 – matt 2010-07-16 02:09:02