パラメータ型に基づいて動的な戻り値型を持つ関数を作成するにはどうすればよいですか?関数の動的戻り型
protected DynamicType Test(DynamicType type)
{
return ;
}
パラメータ型に基づいて動的な戻り値型を持つ関数を作成するにはどうすればよいですか?関数の動的戻り型
protected DynamicType Test(DynamicType type)
{
return ;
}
これにジェネリックを使用する必要があります。たとえば、この例では
protected T Test<T>(T parameter)
{
}
は、「<T>
」は、型の名前を表しコンパイラに指示しますが、それは、この関数を作成するコンテキストにあるかわかりません。
protected int Test(string p) { ... }
protected string Test(DateTime p) { .... }
同様
は、その後、あなたはジェネリックを使用する必要があります。
protected T Test(T type) {
return type;
}
実は、あなたはパラメータの既知のセットを持っており、型を返すと仮定し、それは簡単なオーバーロードで扱うことができ、それを呼び出してしまうと思います動的言語ではありません。 C#でこの問題に取り組むには、一般的なオブジェクトを返すことができますし、後で値が必要であると思われるものに型変換します。インタフェースを返すこともできます。このようにして、特定のクラスインスタンスを本当に気にする必要はありません。他の人が指摘しているように、ジェネリックを使うこともできます。上記のすべてのメソッドには独自の制限があるため、実際には関数の本体の中で何をしたいか/したいかによって異なります。
のC#:だからあなたのような...
int foo;
int bar = Test<int>(foo);
C#は動的になっています。 「動的」タイプを使用します。 –
受け入れ答えは、私はあなたが使用できることを追加する必要があり、それはそれが書かれてから2年以上経過している、良いですので、なくなり:
protected dynamic methodname(dynamic input)
{
return input;
}
入力が同じタイプとして返され、あなたされますメソッドをジェネリックとして呼び出す必要はありません。
参考:あなたはタイムスタンプを見れば
https://msdn.microsoft.com/en-us/library/dd264736.aspx
@Shikoは、実際に、これはアダムの答えの前に来ました。 – uchamp
@champ私の悪い、私は私のコメントを削除します – Shiko