2012-05-12 59 views
0

我想實現一個函數,該函數返回正在操作的類型的值。我該如何做到這一點?具有通用返回值的泛型方法的格式

實施例1:

static T Swap<T>(ref T lhs, ref T rhs) 
{ 
    T temp; 
    temp = lhs; 
    lhs = rhs; 
    rhs = temp; 

    return <T> temp; 
} 

實施例2:

public override T GetRandom() 
{ 
    return (T)_random.Next(_min, _max); 
} 
+0

你是什麼意思的「時間價值」? –

+0

即使沒有理由返回,只需返回temp而沒有任何投射作品,因爲temp已經被聲明爲'T'。順便說一句,你的演員是錯誤的(T)是正確的,但沒用。 –

+0

我的意思是正在處理的類型的值。我還有其他的例子可以更好地解釋我所要求的。 – user272671

回答

7

由於兩個返回型和變型都已經T,這僅僅是:

return temp; 

或者,施放(但這裏不需要):

return (T) temp; 

實際上,儘管如此,國際海事組織一個「交換」應該有void返回!

+0

我剛剛添加了上面需要做的第二個示例。在這種情況下,它似乎不是正確的語法。假如我的T是數字,我該如何處理這種情況。 – user272671

+0

錯誤表示無法將類型int轉換爲T – user272671

+0

@ user272671您的「隨機」示例不起作用。永遠。這不是一個「通用」風格的演員。你正在嘗試做的是**轉換**。唯一的方法可能是'return(T)Convert.ChangeType(theNextValue,typeof(T));'這是非常低效的,但會適用於幾種類型(float,decimal等)。然而,這不是***,而是一種「通用」的東西。 –

0

它沒有任何意義,使這個通用:

public override T GetRandom() 
{ 
    return (T)_random.Next(_min, _max); 
} 

什麼是隨機的 「T」 是什麼意思?假設T是「Person」類型,返回的隨機Person是什麼意思?有一個通用的GetRandom方法似乎沒有任何邏輯。

如果你想要一個整數,只需指定int作爲返回類型。

public override int GetRandom() 
{ 
    return _random.Next(_min, _max); 
} 
相關問題