Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将EqualityComparer转换为EqualityComparer_C#_Generics_Inheritance_Casting_Iequalitycomparer - Fatal编程技术网

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;