O tipo de retorno de IEnumerator.Current
é object
, não object?
. Na minha opinião, como o não genérico IEnumerable
pode conter qualquer tipo de objeto, incluindo nulo, IEnumerator.Current
deve retornar object?
para que o programador não esqueça de verificar.
Existe algum motivo pelo qual o tipo de retorno não foi alterado object?
quando os tipos de referência anuláveis foram introduzidos?
Foi decidido não evitar "avisos espúrios" em
foreach
loops difíceis de contornar, como este exemplo de problema do GitHub :e não foi possível suprimir os avisos:
Se você quiser se aprofundar um pouco mais: