none
C#泛型编程如何比较两个变量的大小 RRS feed

  • 问题

  • 我使用泛型变量定义两个变量,比如T a;T b;请问我该如何比较a和b的大小呢?我直接使用a>b,编译时会提示错误,说泛型变量不能够用于比较大小。谢谢。
    2011年9月24日 15:02

答案

  • 我使用泛型变量定义两个变量,比如T a;T b;请问我该如何比较a和b的大小呢?我直接使用a>b,编译时会提示错误,说泛型变量不能够用于比较大小。谢谢。


    这样定义:

     public class GenericCompare<T1,T2>where T1:IComparable<T2>
        {
            public static int Compare(T1 t1,T2 t2)
            {
                return t1.CompareTo(t2);
            }
        }
    必须实现IComparable接口,否则系统不知道T1,T2是什么类型,无法直接进行比较,会发生编译错误的。

    如果你有其它意见或私下交流,请直接发送maledong_work@foxmail.com;或者讨论(Talk)
    If you do not have QQ, please open the page and download it and click the image to talk or leave message for me.
    下载MSDN桌面工具(Vista,Win7)
    下载Technet桌面小工具(Vista,Win7)
    慈善点击,点击此处

    2011年9月25日 2:26
    版主

全部回复

  •  那要看T是怎么定义的;
    大其心,可容天下之物; 虚其心,可受天下之善;
    2011年9月25日 1:42
  • Hi pucx,

    可以使用System.Collections.Comparer.Default.Compare(a, b) 来使用类型T的默认比较器来进行比较,然而对于不支持比较的类型会抛出异常。建议的做法是为T添加约束where T: IComparable。


    Tech Blog: http://gildor.cnblogs.com
    2011年9月25日 1:43
  • 我使用泛型变量定义两个变量,比如T a;T b;请问我该如何比较a和b的大小呢?我直接使用a>b,编译时会提示错误,说泛型变量不能够用于比较大小。谢谢。


    这样定义:

     public class GenericCompare<T1,T2>where T1:IComparable<T2>
        {
            public static int Compare(T1 t1,T2 t2)
            {
                return t1.CompareTo(t2);
            }
        }
    必须实现IComparable接口,否则系统不知道T1,T2是什么类型,无法直接进行比较,会发生编译错误的。

    如果你有其它意见或私下交流,请直接发送maledong_work@foxmail.com;或者讨论(Talk)
    If you do not have QQ, please open the page and download it and click the image to talk or leave message for me.
    下载MSDN桌面工具(Vista,Win7)
    下载Technet桌面小工具(Vista,Win7)
    慈善点击,点击此处

    2011年9月25日 2:26
    版主