Может ли String [] содержать внутри System.Object?
Вы чувствуете, что вопрос странный? да, что случилось также странно. позволь мне объяснить.
Я нашел фрагмент из этогоКовариантность и контравариантность с массивами C #
string[] strings = new string[1];
object[] objects = strings;
objects[0] = new object();
Джон Скит объясняет, что приведенный выше кодArrayTypeMismatchException
как сказал да это так.
то, что я сделал, я поставил точку останова в строке 3, используя DebuggerVisualizer, я вручную установитьobjects[0] = new object()
это не выдает никакой ошибки, и это работает. позже проверкаstrings[0].GetType()
возвращает System.Object. не толькоSystem.Object
любой тип может быть установлен в строке [] вышеупомянутой процедурой.
Я понятия не имею, как это произошло, я поднял свой вопрос в качестве комментария к тому же вопросу, который я видел, но ответов не было.
Мне любопытно узнать, что происходит позади. Кто-нибудь объяснить, пожалуйста.
Edit1 Это даже интересноПосле воспроизведения описанного выше поведения попробуйте это
int len = strings[0].Length;
если вы поместите мышь над свойством Длина говоритstrings[0].Length threw ArgumentException
с сообщениемCannot find the method on the object instance
но на самом деле он не выдает исключение, и код запускается, даваяlen=0