为什么这会杀死2010年

时间:2011-11-18 13:09:41

标签: visual-studio-2010 crash

如果将其复制到VS2010中,它会呜咽并死亡。为什么?

一位同事通过邮件发送给我,说这就是为什么动态关键字是危险的,并警告说它会杀死VS,我把它复制到我正在处理的东西中,看哪,VS2010崩溃了。(销毁那天早上我工作的大部分内容。)

警告,它会在没有编译或任何其他输入的情况下杀死VS,如果它存在VS将崩溃。

namespace Crash
{

    public class Foo
    {
        public static void Method(object o)
        {

        }
    }

    public class Bar
    {
        public Foo Foo { get; set; }

        public static void Method(dynamic d)
        {
            Foo.Method(d); //This crashes VS instantly!
        }
    }
}

1 个答案:

答案 0 :(得分:8)

有人已经为此记录了一个错误。

http://connect.microsoft.com/VisualStudio/feedback/details/704397/vs-crash-when-passing-dynamic-val-to-static-member-of-class-from-a-static-method-in-c

导致坠机所需的条件:

  • 被调用的静态方法必须仅通过类名引用(即没有命名空间)。
  • 进行调用的方法也必须是静态的,并且它所属的类必须具有非静态属性,其名称与调用其方法的类相同。
  • 传递给它的动态值可以来自任何地方 - 它不必是示例中调用函数的参数。