谁能解释一下以下类声明中有什么问题:
private class PriorityQueueEntry<TPriorityValue,IIdentifiableEntry,IType> :
IComparer<PriorityQueueEntry<TPriorityValue,IIdentifiableEntry,IType>>
where TPriorityValue : IComparable
where IIdentifiableEntry : Identifier<IType>
{
public TPriorityValue Priority{get;private set;}
public IIdentifiableEntry Entry{get;private set;}
public PriorityQueueEntry(TPriorityValue val,IIdentifiableEntry entry)
{
Priority = val;
Entry = entry;
}
public int Compare(PriorityQueueEntry<TPriorityValue,IIdentifiableEntry,IType> first, PriorityQueueEntry<TPriorityValue,IIdentifiableEntry,IType> second)
{
if (first.Priority.CompareTo(second.Priority) < 0)
{
return -1;
}
else if (first.Priority.CompareTo(second.Priority) > 0)
{
return 1;
}
return EqualityComparer<IIdentifiableEntry>.Default.Equals( first.Entry.Id, second.Entry.Id);
}
}
编译器在我使用 EqualityComparer 的那一行抱怨。错误如下:
错误 CS0176:无法使用实例引用访问静态成员 `object.Equals(object, object)',而是使用类型名称对其进行限定
我看不到我在哪里使用实例引用。
对不起,我的错。我发布了一个不完整的问题。为了完整起见,标识符类如下:
public interface Identifier<ID_TYPE>
{
ID_TYPE Id{get;set;}
}
在那里使用 EqualityComparer 是由于复制和粘贴错误(对不起,今天的通用代码太多)。
当然我的问题是错误的,因为我没有给你所有你需要回答的元素(我很快就会删除它)。我IType
需要IConvertible
。总之谢谢大家。