Ваша проблема - бесконечная рекурсия , вызванная инициализатором поля .
Пример
public class Test
{
Type FieldName = SomeValue;
A инициализатор поля выполняется перед телами конструктора. Здесь важно отметить, что они выполняются всегда .
Это означает, что вы не можете сделать это, он запускается, когда class инициализируется.
check checkobject = new check();
Каждый раз, когда вы new up (инициализировать) этот класс , он будет запускать приведенный выше код, который по своей природе new создает другие экземпляры самого себя из-за инициализаторов * field, которые, в свою очередь, запускают вышеописанное снова так далее и так далее , пока у вас не кончится стек .
Если вы действительно хотите самоссылающееся свойство , например это, и вы хотите, чтобы это было инициализировано (в автоматическом смысле c), используйте ленивую технику загрузки, например.
private Check _checkObject;
public Check CheckObject => _checkObject?? (_checkObject = new Check());