public static IEnumerable<T> Method<T>(IEnumerable<T> iterable){
T previous = default(T);
foreach(T current in iterable){
if (!current.Equals(previous)){
previous = current;
yield return current;
}
}
}
我对此代码没有任何疑问,但如果可以使用以下方法比较两个类型 T 的对象,我只是为什么:
if (!current.Equals(previous))
那么为什么无法使用以下方法进行比较:
if (!current == previous)
这 !给你一个错误说
操作员 '!' 不能应用于“T”类型的操作数
如果你删除它,你会得到:
运算符“==”不能应用于“T”和“T”类型的操作数
我放弃了代码挑战,因为它似乎在告诉我你真的无法将一个 T 与另一个进行比较。然后我发现你可以做到这一点,但只是使用不同的语法/使用特定的方法。
谁能告诉我为什么会这样?