Конвертация enum в int в generic методах
От: Silver_S Ниоткуда  
Дата: 24.04.22 12:15
Оценка:
Хочется для enum реализовать простенькие функции для битовых операций, но это работает в десятки раз медленнее, чем нужно.
Нету никаких способов чтобы это ускорить?
Жаль, что в C# даже нету простеньких препроцессорных текстовых макросов.

[MethodImpl(MethodImplOptions.AggressiveInlining | MethodImplOptions.AggressiveOptimization)]
public static bool HasAnyFlag<T>(T en1, T en2) where T : IConvertible
{
    return (en1.ToInt32(null) & en2.ToInt32(null)) != 0;
}
//...
HasAnyFlag((int)f, (int)(SomeFlags.F1 | SomeFlags.F2)); //Быстро.
HasAnyFlag(f, SomeFlags.F1 | SomeFlags.F2); //В десятки раз медленнее!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.