Próbuję przechowywać listę elementów w kolekcji za pomocą wybranego przeze mnie klucza. W Javie po prostu użyłbym Map w następujący sposób:
class Test {
Map<Integer,String> entities;
public String getEntity(Integer code) {
return this.entities.get(code);
}
}
Czy istnieje równoważny sposób zrobienia tego w C #?
System.Collections.Generic.Hashset
nie używa skrótu i nie mogę zdefiniować klucza typu niestandardowego,
System.Collections.Hashtable
nie jest klasą ogólną
System.Collections.Generic.Dictionary
, nie ma get(Key)
metody
c#
java
generics
collections
zmbq
źródło
źródło
O(lg(n))
podobny do Java One? Myślę, że nieSłownik <,> jest odpowiednikiem. Chociaż nie ma metody Get (...), ma indeksowaną właściwość o nazwie Item, do której można uzyskać dostęp w C # bezpośrednio za pomocą notacji indeksu:
Jeśli chcesz użyć niestandardowego typu klucza, powinieneś rozważyć zaimplementowanie IEquatable <> i zastąpienie Equals (object) i GetHashCode (), chyba że domyślna (referencyjna lub strukturalna) równość jest wystarczająca do określenia równości kluczy. Powinieneś także uczynić swój typ klucza niezmiennym, aby zapobiec dziwnym rzeczom, które będą się dziać, jeśli klucz zostanie zmutowany po wstawieniu go do słownika (np. Ponieważ mutacja spowodowała zmianę jego kodu skrótu).
źródło
źródło
TryGetValue
, ponieważval
zostanie przypisananull
(tj.default(string)
), Jeśli klucz nie istnieje.