簡體   English   中英

C#相當於Java類 <E> 和E擴展枚舉 <E>

[英]C# equivalent of java Class<E> and E extends Enum<E>

我正在嘗試將一個Java庫轉換為C#代碼,並且由於我是C#的新手(直到最近才使用過泛型),所以我有點掙扎...

至於Java泛型,我正在嘗試(或多或少了解)其操作方式。 盡管我已經檢查了為什么不從Enum <E擴展到Enum <E >>以及如何在Java中使用Class <T>? ,我無法真正理解這段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 DocEnumMap(Class<K> keyType)

使用指定的鍵類型創建一個空的枚舉映射。

似乎您要查找的Dictionary構造函數是無參數的。

MSDN

Dictionary<TKey, TValue>() :初始化Dictionary類的新實例,該實例為空,具有默認的初始容量,並使用默認的相等比較器作為鍵類型。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM