質問が変だと思いますか?はい、何が起こったのかも奇妙です。説明させてください。
このCovariance and Contravariance with C# Arraysからスニペットを見つけました
string[] strings = new string[1];
object[] objects = strings;
objects[0] = new object();
Jon skeet は、上記のコードは をスローすると説明しArrayTypeMismatchExceptionています。
私がしたことは、3 行目にブレークポイントを配置することです。DebuggerVisualizer を使用して手動で設定objects[0] = new object()すると、エラーは発生せず、動作します。後でチェックするとstrings[0].GetType()System.Object が返されます。System.Object上記の手順で string[] に任意の型を設定できるだけではありません。
これがどのように起こったのかわかりません。これを見たのとまったく同じ質問で、あそこにコメントとして質問を提起しましたが、答えはありません。
背後で何が起こっているのか知りたいです。誰か説明してください。
Edit1 これも面白い
上記の動作を再現した後、これを試してください
int len = strings[0].Length;
プロパティの長さの上にマウスを置くとstrings[0].Length threw ArgumentException、メッセージCannot find the method on the object instanceが表示されますが、実際には例外がスローされず、コードが実行されて結果が得られますlen=0