c# - 如何在 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?
提前致谢。
解决方案
如果您绝对需要初始化 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;
}
推荐阅读
- google-cloud-platform - 有没有办法在谷歌云 sql 中设置 net_read_timeout 标志的值?
- java - 命名扩展另一个抽象类的抽象类
- javascript - What is the best way to communicate and pass data between child polymer elements?
- python - python + sqlite 将变量插入 PRAGMA 语句
- laravel - 从自定义验证对象中检索参数
- ajax - 代码点火器验证-Ajax,错误:验证时功能工作->运行为真
- html - HTML - 按钮和输入
- python - 如何在 Eric6 中单独使用 Qt Designer 和 PyQt5 的离线文档?
- ruby-on-rails - Ruby on Rails - 权威宝石 - 未定义的方法
- c# - CORS 策略中不允许请求方法 POST