Por que o operador 'as' não pode ser usado para analisar tipos de valores não anuláveis?

Todo desenvolvedor tem seus próprios padrões. Alguns desenvolvedores gostam de<type>.TryParse(), alguns desenvolvedores gostam de transmitir usando(type)object;, e alguns desenvolvedores adoram usar as palavras-chave.

Notei um soluço com o'as' operador - você não pode usá-lo para realizar conversões entre tipos de valores não anuláveis. Li a documentação no MSDN na palavra-chave as e eles também a explicam como "Você pode usar o operador as para executar certos tipos de conversões entre tipos de referência compatíveis ou tipos anuláveis".

Eu testei isso com o seguinte:

                    int i = 0;
                    var k = i as int; //Breaks

                    int i = 0;
                    var k = i as int?; //Works

Quais foram as razões decididas para aas palavra-chave para executar dessa maneira?

questionAnswers(1)

yourAnswerToTheQuestion