C#泛型的一些小技巧
C#的泛型功能较小(比如和C++的泛型相比),连比较两个泛型变量(它们的类型是可以比较的)的大小都做不到,如:
public bool MyCompare<T,T2>(T a, T2 b)
{
return a > b; // 系统会报错。
}
以上代码哪怕T和T2分别是 int 和 double 也一样不能比较,很坑爹。
但是可以借助 dynamic 就能实现类似C++的泛型功能了,上面的代码改一下:
public bool MyCompare<T,T2>(T a, T2 b)
{
dynamic aa = a, bb = b;
return aa > bb;
}
这样如果T,T2是int和double就能比较了。通过这个方法可以扩展C#的泛型用法,大家可以试试。
还有一点,当某个函数的参数类型是object类型的时候,这时候是可以直接传泛型参数的。
比如某个函数声明是 public void DeSub(object arg); 那么arg可以接受类型是泛型的 "对象"。
posted on 2016-12-02 15:46 Silentdoer 阅读(199) 评论(0) 收藏 举报
浙公网安备 33010602011771号