2013-10-17 15 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; 
} 

あなたは、そのパラメータを想定して、一般的な方法にwhere制約を追加することができますなど、ToStringメソッド、あなただけのEqualsのような基本的な操作を実行できるように、コンパイラが唯一のTがオブジェクトであると仮定することができることに留意してくださいクラスや構造のような具体的なものです。

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

実際には、複数の種類の同じものを扱うために基本クラスまたはインターフェイスを使用する可能性があります。ジェネリックメソッドを使用する場合、そのパターンで何をしたいのか分からない場合は、すぐに実現します。あなたの制約によって、ジェネリックメソッドが特定のインターフェイスタイプでのみ動作するように制約する必要がある場合は、おそらくメソッドをインターフェイスの一部にするだけです。

+2

またはインターフェイス:) http://msdn.microsoft.com/en-us/library/bb384067.aspx – pollirrata

関連する問題