gpt4 book ai didi

java - C# 相当于 java Class 和 E extends Enum

转载 作者:行者123 更新时间:2023-11-30 02:56:20 25 4
gpt4 key购买 nike

我正在尝试将一个 Java 库转换为 C# 代码,由于我是 C# 新手(直到最近才使用过泛型),所以我有点挣扎......

对于Java泛型,我正在尝试(并且或多或少地了解)它的操作方式。虽然我已经检查过这个Why not extending from Enum<E extends Enum<E>>还有这个How to use Class<T> in Java? ,我无法真正理解这段 Java 代码中发生了什么,因此,我无法考虑等效的 C# 代码。

public abstract class TraciObject<E extends Enum<E>> {
private final String id;
private final EnumMap<E, ReadObjectVarQuery<?>> readQueries;
protected TraciObject(String id, Class<E> enumClass) {
this.id = id;
readQueries = new EnumMap<E, ReadObjectVarQuery<?>>(enumClass);
}
...
}

到目前为止,我在 C# 中的方法如下:

public abstract class TraciObject<E> where E : Enum<E> { //Non-generic type Enum cannot be used with type arguments
private readonly string id;

private readonly Dictionary<E, ReadObjectVarQuery<E>> readQueries;

protected TraciObject(String id, E enumClass)
{
this.id = id;
readQueries = new Dictionary<E, ReadObjectVarQuery<E>>(enumClass); //cannot convert from E to 'System.Collections.Generic.IEqualityComparer'
}

当我有readQueries = new Dictionary<E, ReadObjectVarQuery<E>>(enumClass);时我试图获得与Java的EnumMap(Class<K> keyType)相对应的,但检查有关字典 https://msdn.microsoft.com/es-es/library/xfhwa508(v=vs.110).aspx 的文档我不确定这是否可能

最佳答案

来自Java Doc :EnumMap(Class<K> keyType) :

Creates an empty enum map with the specified key type.

看来Dictionary您正在寻找的构造函数是无参数的构造函数。

来自MSDN :

Dictionary<TKey, TValue>(): Initializes a new instance of the Dictionary class that is empty, has the default initial capacity, and uses the default equality comparer for the key type.

关于java - C# 相当于 java Class<E> 和 E extends Enum<E>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37142685/

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