Если я сделаю это, я получу System.StackOverflowException
:
private string abc = "";
public string Abc
{
get
{
return Abc; // Note the mistaken capitalization
}
}
Я понимаю, почему - свойство ссылается на себя, что приводит к бесконечному циклу. (См. Предыдущие вопросы здесь и здесь).
Что мне интересно (и что я не видел в ответах на предыдущие вопросы), почему компилятор С# не поймает эту ошибку? Он проверяет некоторые другие виды циркулярной ссылки (классы, наследующие от себя и т.д.), Правильно? Это просто, что эта ошибка не была достаточно распространена, чтобы заслужить проверку? Или есть какая-то ситуация, о которой я не думаю, когда вы хотите, чтобы свойство действительно ссылалось на себя таким образом?