ジェネリック型の制約のみが異なるオーバーロードされたメソッドを持つことはできますか?
これはコンパイルされません:
void Foo<T>(T bar) where T : class
{
}
void Foo<T>(T bar) where T : struct
{
}
これらは「オープン」メソッドであるため、具体的に型指定T
された .
明白な解決策はそれらを過負荷にしないことですが、なぜこれが C# で機能しないのだろうか?
追加の質問: これが単なる C# コンパイラの制約である場合、IL はそのようなオーバーロードを許可しますか?