Я пытаюсь сохранить список предметов в коллекции с ключом на мой выбор. В Java я бы просто использовал Map следующим образом:
class Test {
Map<Integer,String> entities;
public String getEntity(Integer code) {
return this.entities.get(code);
}
}
Есть ли эквивалентный способ сделать это в C #?
System.Collections.Generic.Hashset
не использует хэш, и я не могу определить пользовательский тип ключа
System.Collections.Hashtable
не является универсальным классом
System.Collections.Generic.Dictionary
не имеет get(Key)
метода
c#
java
generics
collections
zmbq
источник
источник
O(lg(n))
как Java? Я думаю, что нетСловарь <,> является эквивалентом. Хотя у него нет метода Get (...), у него есть индексированное свойство Item, к которому вы можете обращаться в C # напрямую, используя индексную нотацию:
Если вы хотите использовать пользовательский тип ключа, вам следует подумать о реализации IEquatable <> и переопределении Equals (object) и GetHashCode (), если только равенство по умолчанию (ссылка или структура) не является достаточным для определения равенства ключей. Вы также должны сделать свой тип ключа неизменным, чтобы предотвратить странные вещи, если ключ видоизменяется после того, как он был вставлен в словарь (например, потому что мутация вызвала изменение его хэш-кода).
источник
источник
TryGetValue
, посколькуval
он будет назначенnull
(то естьdefault(string)
), если ключ не существует.