gpt4 book ai didi

c# - 这两个 Java 和 C# 语句是否相等?

转载 作者:太空宇宙 更新时间:2023-11-03 19:19:20 27 4
gpt4 key购买 nike

在 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 相同。

如果不是请指正一下好吗?

最佳答案

不,它们不相等。 K extends ... 部分需要转换为约束:

class ListMap<K, E>
: ImyMap<K, E>, IEnumerable<KeyValuePair<K, E>>
where K : IComparable<K>
{
}

通配符? super K 在 C# 中不是必需的。通配符是 Java 支持协变/逆变的方式。在 C# 中,这是作为接口(interface)声明的一部分完成的:

interface IComparable<in K> { ... }

in修饰符使接口(interface)逆变,与Java中的通配符作用相同。

关于c# - 这两个 Java 和 C# 语句是否相等?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13497456/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com