У меня есть перечисление
public enum INFLOW_SEARCH_ON
{
ON_ENTITY_HANDLE = 0,
ON_LABEL = 1,
ON_NODE_HANDLE = 2
} // enum INFLOW_SEARCH_ON
Я должен использовать это перечисление для поиска в столбце сетки.
Чтобы получить индекс столбца, я использую
MyEnumVariable.GetHashCode()
, который работает нормально, или я должен использовать
(short)MyEnumVariable
. Я немного запутался в использовании GetHashCode ()
. Есть ли проблемы с его использованием?
Использование GetHashCode()
некорректно. Вы должны привести к int
. Использовать его так, как вы делаете, - просить хищников (или Раймонда) прийти и съесть вас.
То, что GetHashCode()
возвращает целочисленное значение перечисления, является подробностью реализации и может измениться в будущих версиях .net.
GetHashCode()
гарантирует, что, если два значения равны equal
, их хеш-коды тоже равны. Обратный путь не гарантирован.
Мое эмпирическое правило заключается в том, что если бы GetHashCode
возвращало постоянное значение, ваша программа все равно должна работать правильно (но потенциально может быть намного медленнее), поскольку константа GetHashCode
тривиально выполняет контракт, но имеет плохие свойства распределения.