首页 > 解决方案 > 如何在 C# 的同一个构造函数中初始化同一个类

问题描述

我正在尝试创建一个如下所示的类,

public class ClassA
{
  public ClassA()
{
     ClassAList = new List<SomeOtherClassA>();
     ClassBList = new List<SomeOtherClassB>();
     ClassCList = new List<SomeOtherClassC>();
     errorRecords  = new ClassA();
}
public List<SomeOtherClassA>ClassAList {get;set;}
public List<SomeOtherClassB>ClassBList {get;set;}
public List<SomeOtherClassC>ClassCList {get;set;}

public ClassA errorRecords {get;set;}

}

初始化 errorRecords 时,它正在创建连续循环。如何在没有无限循环的情况下初始化 errorRecords?

提前致谢。

标签: c#

解决方案


如果您绝对需要初始化 errorRecords 而不从辅助方法或其他方法访问它 - 您可以将属性转换为具有私有支持字段的完整属性。

当您第一次访问该属性时,您可以使用新的ClassA.

例如:

public class ClassA
{
  public ClassA()
  {
      ClassAList = new List<SomeOtherClassA>();
      ClassBList = new List<SomeOtherClassB>();
      ClassCList = new List<SomeOtherClassC>();
  }
  public List<SomeOtherClassA>ClassAList {get;set;}
  public List<SomeOtherClassB>ClassBList {get;set;}
  public List<SomeOtherClassC>ClassCList {get;set;}

  public ClassA errorRecords 
  {
      get
      {
          _errorRecords ??= new();
          return _errorRecords;
      }
      set
      {
          _errorRecords = value;
      }
  }
  private ClassA _errorRecords;
}

推荐阅读