OutOfMemoryException, почему? - C#
Формулировка задачи:
Почему данный код приводит к OutOfMemoryException?
Без public string name такого не бывает
namespace Classes
{
class Program
{
public string name
{
set { name = value + " Some value"; }
get { return name; }
}
static void Main(string[] args)
{
Program program = new Program("Timer");
program.name = "ProgName";
Console.WriteLine(program.name);
}
public Program(string name)
{
this.name = name;
}
public static int Foo(int n) => n * 2;
}
}Решение задачи: «OutOfMemoryException, почему?»
textual
Листинг программы
class SomeClass
{
//Автосвойство на случай, если дополнительной логики не требуется
//Поле класса для этого свойства сгенерируется компилятором, т.е. оно
//всё равно есть, даже если и не указано явно.
public string Name{ get;set;}
//Тут мы наворотили какой-то логики и компилятор нам не помощник.
//В данном случае мы используем поле для хранения данных, но
//можно творить что угодно: лезть в БД, читать файл или генерировать значение.
private string _someInternalField;
public string FavoriteBook
{
get {return _someInternalField; }
set {_someInternalField = "My book is:" + value; }
}
}