C# 将EqualityComparer转换为EqualityComparer
我有这样的等级制度:C# 将EqualityComparer转换为EqualityComparer,c#,generics,inheritance,casting,iequalitycomparer,C#,Generics,Inheritance,Casting,Iequalitycomparer,我有这样的等级制度: public interface INode { //... } public interface INode<T> : INode { //... } public class Node : INode { //... } public class Node<T> : Node, INode<T> { //... } 现在我想这样做: EqualityComparer<INode&
public interface INode
{
//...
}
public interface INode<T> : INode
{
//...
}
public class Node : INode
{
//...
}
public class Node<T> : Node, INode<T>
{
//...
}
现在我想这样做:
EqualityComparer<INode<int>> intcomparer = EqualityComparer<INode<int>>.Default;
EqualityComparer<INode> comparer = intcomparer;
为什么这个角色无效?如何修复它?为什么强制转换应该有效 是什么让你相信EqualityComparer源自EqualityComparer或EqualityComparer 您无法将其与此进行比较:
Node<string> stringNode;
Node node = stringNode;
当您查看
public class Node<T> : Node, INode<T>
public abstract class EqualityComparer<T> :
System.Collections.Generic.IEqualityComparer<T>,
System.Collections.IEqualityComparer
EqualityComparer<INode<int>> intcomparer = EqualityComparer<INode<int>>.Default;
IEqualityComparer comparer = intcomparer;
IEqualityComparer<INode> comparer = EqualityComparer<INode>.Default;
IEqualityComparer<INode<int>> intcomparer = comparer;