Jav*_*aSa 0 c# generics comparison
我有两个通用类型T的对象.
T x , T y
Run Code Online (Sandbox Code Playgroud)
我想能够做比较,如:
if (x >= y)
Run Code Online (Sandbox Code Playgroud)
因此,我尝试使用compareTo缺少的方法,直到我添加约束where T:IComparable.只有这样才能在智慧中看到它.
不知道为什么我才会在写之前看到它而不是它.
不知道为什么我才会在写之前看到它而不是它.
因为在存在该约束之前,编译器不知道哪些成员可用T,除了那些作为其一部分存在的成员object.你不会期望能够写:
object x = GetObjectFromSomewhere();
object y = GetObjectFromSomewhere();
int comparison = x.CompareTo(y);
Run Code Online (Sandbox Code Playgroud)
你会?C#是一种静态类型语言(除了dynamic) - 编译器必须知道你在使用它们时谈论的是哪些成员.
IComparable<T>顺便IComparable说一句,如果您感兴趣的类型实现而不仅仅是非泛型,那将是一个更好的约束.它表现更好(因为它可以避免装箱)并且它更加类型安全(因为它阻止你尝试比较不相关的类型).
| 归档时间: |
|
| 查看次数: |
98 次 |
| 最近记录: |