终于明白了为什么以下代码不能编译:
T Max<T>( T a, T b )
{
if( a<b )
return b;
else
return a;
}
void main()
{
int m = Max<int>( 3, 5 );
}
范型的实例化居然是在运行时JIT编译的时候,
范型函数中Object中的ToString, GetHashCode等方法是可以调用的,
说白了:除非你对类似于a这种参数调用的方法是所有.NET类型
但是可以可以添加约束来搞定需要调用什么方法的问题
T Max<T> where T: IComparable ( T a, T b )
{
if( a.CompareTo(b) < 0 )
return b;
else
return a;
}
看了文章相信你会明白怎么回事
http://msdn.microsoft.com/en-
对 .NET感兴趣的同学,可以好好看看