Использование GetHashCode для получения значения типа Enum int

Вы имеете в виду в Python или использование ctypes?

В первом случае, Вы просто не можете - потому что Python не имеет целых чисел на 16/32 бита, со знаком/неподписанных.

Во втором случае, можно использовать type():

>>> import ctypes
>>> a = ctypes.c_uint() # unsigned int
>>> type(a)

Для более ссылочного на ctypes, его типе, см. официальная документация .

24
задан André Gasser 22 August 2019 в 17:49
поделиться

1 ответ

Использование GetHashCode() некорректно. Вы должны привести к int. Использовать его так, как вы делаете, - просить хищников (или Раймонда) прийти и съесть вас.

То, что GetHashCode() возвращает целочисленное значение перечисления, является подробностью реализации и может измениться в будущих версиях .net.

GetHashCode() гарантирует, что, если два значения равны equal, их хеш-коды тоже равны. Обратный путь не гарантирован.

Мое эмпирическое правило заключается в том, что если бы GetHashCode возвращало постоянное значение, ваша программа все равно должна работать правильно (но потенциально может быть намного медленнее), поскольку константа GetHashCode тривиально выполняет контракт, но имеет плохие свойства распределения.

47
ответ дан 28 November 2019 в 22:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: