看看下面的代码:
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 测试;这是一个屏幕截图:
这种诡计是否只有调试器才有可能,还是有某种方法可以在代码中进行这种“不安全的分配”?
(显然,我只是出于对科学的好奇。这个问题和相关评论让我问了这个问题。)