Почему для сложения требуется приведение, а вычитание работает без приведения? См. Приведенный ниже код, чтобы понять, о чем я прошу
public enum Stuff
{
A = 1,
B = 2,
C = 3
}
var resultSub = Stuff.A - Stuff.B; // Compiles
var resultAdd = Stuff.A + Stuff.B; // Does not compile
var resultAdd2 = (int)Stuff.A + Stuff.B; // Compiles
примечание: как для сложения, так и для вычитания не имеет значения, выходит ли результат за пределы диапазона (перечисления) или нет во всех трех приведенных выше примерах.