2016-11-07 16 views
0

C#の場合:メソッドの戻り値の型として汎用引数型の型を使用することはできますか?C++のテンプレートのようなC#のジェネリック型の型控除?

C++の例は:それは、一般的なタイプで利用可能な方法についての仮定を作るためなど

class AgrumentClass 
{ 
    typedef int type; 
public: 
    static type GetSomething() { return 0; } 
}; 

template< class T > 
class GenericClass 
{ 
    typedef typename T::type type; 
public: 
    static type GetSomething() { return T::GetSomething(); } 
}; 

int main() 
{ 
    int value = GenericClass<AgrumentClass>::GetSomething(); 

    return value; 
} 
+0

コード変換ツールではないので、この質問をトピックとしてクローズすることにしました! – mybirthname

+0

はいC#のジェネリックスを学ぶことができ、どこでも使えます。https://msdn.microsoft.com/en-us/library/512aeb7t.aspx –

+5

@mybirthname彼はコード変換ツールを求めていません。彼は、C#に並列機能があるかどうかと、彼が参照しているコンセプトを示すC++の例を含めて尋ねています。 –

答えて

0

あなたの例では、C#にクリーンな翻訳を持っていません。 C#では、ジェネリック型を特定の型またはインタフェースの子孫または実装者に制限できますが、それはできる限りです。メソッドがコンパイル時に型に解決できない場合、コンパイルされません。

+0

それを解決するための「汚れた」方法はありますか? – monotomy

+0

私は静的メソッドのためにあるとは思わない。私が正しく覚えていれば、C#では静的メソッドは継承できません。 –

+0

staticは重要ではありません - C++の例を可能な限り短く単純なものにするためにstaticを使用しました(オブジェクトのインスタンス化なし)。 – monotomy

関連する問題