2013-10-17 142 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