在C#中
class ListMap<K, E>
: ImyMap<K, E>, IComparable<K>, IEnumerable<KeyValuePair<K, E>>
{
}
Java中的
class MyListMap<K extends Comparable<? super K>, E>
implements MyMap<K,E>, Iterable<KeyValuePair<K, E>>
{
}
只是尝试将一些数据结构从Java转换为C#,并想知道我的C#实现是否与我的Java实现相同。
如果没有,请你纠正吗?
答案 0 :(得分:6)
不,那些不平等。 K extends ...
部分需要转换为约束:
class ListMap<K, E>
: ImyMap<K, E>, IEnumerable<KeyValuePair<K, E>>
where K : IComparable<K>
{
}
C#中不需要通配符? super K
。通配符是Java支持共同/逆转的方式。在C#中,这是作为接口声明的一部分完成的:
interface IComparable<in K> { ... }
in
修饰符使接口逆变,这与Java中的通配符具有相同的效果。