Довелось как-то раз отлаживать вот такой код на C#, который «на ровном месте» падал с NullReferenceException
:
public class Tester {
public string Property { get; set; }
public void Foo() {
this.Property = "Some string"; // NullReferenceException
}
}
Да, вот на этой самой строчке с присвоением свойства падал NullReferenceException
. Что за дела, думаю — неужели рантайм перестал проверять наличие экземпляра перед вызовом экземплярных методов?
Как оказалось — в некотором роде да, перестал. Правда, и компилятор оказался не тем, за кого себя выдаёт, да и проверки вовсе не гарантированы рантаймом… Подробнее — под катом.