重複の可能性:
ジェネリックメソッドとメソッドのオーバーロード
わかりました、私は偶然これを打ちました...この状況を与える:
class Program {
static void Main( string[ ] args ) {
var obj = new gen<int>( );
Console.Write( obj[ 1 ] );
Console.ReadKey( );
}
}
class gen<T> {
public int this[ T i ] { get { return 2; } }
public int this[ int i ] { get { return 1; } }
}
常に1を出力します。コンパイラが文句を言うか、ランタイムがクラッシュしてCPUを焼き付けて溶かすと予想していましたが、いいえ、「1」を出力できます。
もちろん、汎用パラメーターに他のタイプを使用する場合は、どちらかを返すことを選択できます。笑い声の場合、ジェネリック型パラメーターとしてUIntを使用してみます。呼び出しを区別できるため、質問は次のとおりです。
なぜC#はおかしくなりませんか?アンダース・ヘルスバーグは部隊の混乱を感じるべきではありませんか?
ジェネリックパラメーターを特定のタイプから制限するにはどうすればよいですか?このように、Tはint以外の何でもかまいません(ただし、長い場合は問題ありません)