さまざまなジェネリック型に応じて異なる結果を得るには、メソッドのオーバーロードを使用します。それは動作しません。私のコードはそれをはっきりと示します。ジェネリック型のオーバーロードエラー
static class Helper
{
public static bool Can(int i)
{
return true;
}
public static bool Can(Object o)
{
return false;
}
}
class My<T>
{
public static bool can = Helper.Can(default(T));
}
Console.WriteLine(Helper.Can(default(int)));//True,it is OK
Console.WriteLine(My<int>.can);//false?? why the overload doesn't work
Console.WriteLine(My<Object>.can);//false
なぜMy<int>
呼び出しHelper.Can(オブジェクトO)ではなくHelper.Canは、(i int型)?
素晴らしい。ありがとうございました – zilong
「実行時にジェネリック型のパラメータが解決されました」という記述には賛成できません。その場合、コンパイラは 'List'からint項目を取得できないことをコンパイル時に知ることができませんでした。コンパイル時に未解決と見なされるものは、ジェネリッククラス内のジェネリック型パラメータの出現です。 –
@ O.R.Mapper:ジェネリッククラス内での意味です。 – SLaks