Ну, например, перегрузка оператора не нарушает ваш код.Вы получаете StackOverflowException
, потому что получатель вашего text
свойства пытается вернуть себя.
Вы должны использовать вспомогательное поле для вашего свойства:
private string _text;
public string Text
{
get { return _text; }
set
{
if (value != null)
_text = value;
else
_text = string.Empty;
}
}
Что .NET делает подохватывает конвертировать вашу собственность в аксессор и мутатор - два отдельных метода.В вашем исходном примере ваш код будет выполнять следующее:
private string text;
public string get_text()
{
return get_text(); // <-- StackOverflowException
}
public void set_text(string value)
{
this.text = value;
}
В то время как исправленная версия правильно использует поле поддержки:
private string text;
public string get_text()
{
return this.text; // Happy :)
}
public void set_text(string value)
{
this.text = value;
}