这两个Java和C#语句是否相同?

Lou*_*caj 1 .net c# java interface

在C#中

class ListMap<K, E>
    : ImyMap<K, E>, IComparable<K>, IEnumerable<KeyValuePair<K, E>>
{
}
Run Code Online (Sandbox Code Playgroud)

在Java中

class MyListMap<K extends Comparable<? super K>, E>
    implements MyMap<K,E>, Iterable<KeyValuePair<K, E>>
{
}
Run Code Online (Sandbox Code Playgroud)

只是尝试将一些数据结构从Java转换为C#,并想知道我的C#实现是否与我的Java实现相同.

如果没有,请你纠正吗?

Dan*_*iel 6

不,那些不平等.该K extends ...部分需要转换为约束:

class ListMap<K, E>
    : ImyMap<K, E>, IEnumerable<KeyValuePair<K, E>>
   where K : IComparable<K>
{
}
Run Code Online (Sandbox Code Playgroud)

? super KC#中不需要通配符.通配符是Java支持共同/逆转的方式.在C#中,这是作为接口声明的一部分完成的:

interface IComparable<in K> { ... }
Run Code Online (Sandbox Code Playgroud)

in修改使得界面逆变,其作为Java的通配符相同的效果.