次のコードを見てください。
static void Main(string[] args)
{
string s = null;
string[] myArray = new string[1];
{ } // do something evil here
if (s.GetType() == typeof(int))
{
Console.WriteLine("This should not happen!");
}
Console.ReadLine();
}
This should not happen
書けるようになる方法はありますか?そうではないと思います。ただし、デバッガーを使用して行うことができます。行にブレークポイントを配置し、{ } // do something evil here
続行する前にイミディエイト ウィンドウで次のコマンドを実行します。
((object[])myArray)[0] = 99;
s = myArray[0];
実行は続行され、This should not happen
出力されます。Visual Studio 2008 でテスト済み。ここにスクリーンショットがあります:
この種のトリッキーはデバッガでのみ可能ですか、それともコードでそのような「安全でない割り当て」を行う方法はありますか?
(明らかに、私は科学的な好奇心からのみ尋ねます。この質問と関連するコメントが、私にこの質問をさせました。)