可能重复:
泛型方法和方法重载
好的,我不小心撞到了这个……鉴于这种情况:
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# 不惊慌失措?Anders Hejlsberg 不应该感到原力受到干扰吗?
如何限制某些类型的泛型参数?因为在这个 T 可以是除整数之外的任何东西(但 long 是可以的)