Pode um String [] manter System.Object dentro dele?
Você acha que a pergunta é estranha? sim o que aconteceu também estranho. deixe-me explicar.
Eu encontrei um trecho desteCovariância e Contravariância com C # Arrays
string[] strings = new string[1];
object[] objects = strings;
objects[0] = new object();
Jon Skeet explica que o código acima irá lançarArrayTypeMismatchException
, como disse sim, sim.
o que eu fiz é colocar um breakpoint na linha 3, usando o DebuggerVisualizer que eu configurei manualmenteobjects[0] = new object()
não apresenta nenhum erro e funciona. verificação posteriorstrings[0].GetType()
retorna System.Object. não somenteSystem.Object
qualquer tipo pode ser definido na string [] pelo procedimento mencionado acima.
Eu não tenho idéia de como isso aconteceu, eu levantei a minha pergunta como um comentário lá na mesma pergunta que eu vi, mas sem respostas.
Estou curioso para saber o que está acontecendo por trás. Alguém explica pls.
Edit1 Isso é mesmo interessanteDepois de reproduzir o comportamento acima tente este
int len = strings[0].Length;
se você colocar o mouse sobre o comprimento da propriedade é dizstrings[0].Length threw ArgumentException
com mensagemCannot find the method on the object instance
mas na verdade ele não gera exceção e executa o código produzindo resultadolen=0