Сложение enum vs вычитание и приведение

Почему для сложения требуется приведение, а вычитание работает без приведения? См. Приведенный ниже код, чтобы понять, о чем я прошу

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     

примечание: как для сложения, так и для вычитания не имеет значения, выходит ли результат за пределы диапазона (перечисления) или нет во всех трех приведенных выше примерах.

28
задан lahsrah 30 July 2011 в 09:34
поделиться