2013-10-17 145 views
6

我想知道函數是否有可能返回C#中的參數中指定的類型的值。C# - 函數的返回類型與參數的返回類型相同

這裏是我想做的事:

public ReturnValueUndefined function(undefinedType value) 
{ 
    return value; 
} 

我想是因爲我希望我的函數採取任何類作爲參數,並返回相同的類來使用它。

謝謝!

+0

可能的重複[如何使方法的返回類型是泛型?](http://stackoverflow.com/questions/9808035/how-do-i-make-the-return-type-of-a -method-generic) –

回答

18

你想要一個通用函數。

public T YourFunctionName<T>(T value) 
{ 
    return value; 
} 

請記住,編譯器只能假設T是一個對象,所以你只能執行像平等相待,的ToString等基本操作,您可以添加一個where約束泛型方法的假設,參數具體就像一個階級或一個結構。

public T YourFunctionName<T>(T value) where T : class 
{ 
    return value; 
} 

儘管很可能您只是想使用基類或接口來處理多種類型。當使用泛型方法時,如果你不能做那些你想用這種模式做的事情,你會很快意識到。如果您的約束將您帶到了必須限制泛型方法僅適用於特定接口類型的地步,那麼您可能只是希望方法成爲接口的一部分。

+2

或界面:) http://msdn.microsoft.com/en-us/library/bb384067.aspx – pollirrata