Условный оператор не может быть приведен неявно?

Я немного озадачен этой маленькой причудой C #:

Данные переменные:

Boolean aBoolValue;
Byte aByteValue;

Следующие компиляции:

if (aBoolValue) 
    aByteValue = 1; 
else 
    aByteValue = 0;

Но это не будет

aByteValue = aBoolValue ? 1 : 0;

Ошибка говорит: «Невозможно неявно преобразовать тип« int »в« byte ».»

И, конечно, это чудовище скомпилирует:

aByteValue = aBoolValue ? (byte)1 : (byte)0;

Что тут происходит?

РЕДАКТИРОВАТЬ:

Использование VS2008, C # 3.5

Ответы на вопрос(3)

Ваш ответ на вопрос