почему это убивает 2010 - PullRequest
       2

почему это убивает 2010

2 голосов
/ 18 ноября 2011

Если вы скопируете это в 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 Ответ

8 голосов
/ 18 ноября 2011

Кто-то уже зарегистрировал ошибку для этого.

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

Условия, необходимые для возникновения аварии:

  • На вызываемый статический метод должны ссылаться только имена классов (т. Е. Без пространства имен).
  • Метод, выполняющий вызов, также должен быть статическим, а класс, которому он принадлежит, должен иметь нестатическое свойство с тем же именем, что и класс, метод которого вызывается.
  • Передаваемое ему динамическое значение может поступать откуда угодно - оно не должно быть аргументом для вызывающей функции, как в примере.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...