C#从属性列表中引用外部类

C#从属性列表中引用外部类,c#,class,oop,object,C#,Class,Oop,Object,鉴于以下类别: class OrderHeader { public int orderNo; public List<OrderDetail> dtlRows = new List<OrderDetail>(); } class OrderDetail { public int rowNo; public string info; } 例如: OrderHeader h = new OrderHeader(); h.orderNo =

鉴于以下类别:

class OrderHeader
{
    public int orderNo;
    public List<OrderDetail> dtlRows = new List<OrderDetail>();
}

class OrderDetail
{
    public int rowNo;
    public string info;
}
例如:

OrderHeader h = new OrderHeader();
h.orderNo = 12345;

OrderDetail d = new OrderDetail();
d.rowNo = 1;
d.info = "Test Row";
d.parentHdrRecord = h;

h.dtlRows.Add(d);

这是一个糟糕的表格吗?执行内存方面的操作代价高吗?

让对象相互引用被认为是一种不好的做法,因为这被认为是一种循环依赖。。。然而;如果您首先使用实体框架代码,这几乎正是您在数据库中实现一对多关系的方式。

让对象相互引用被认为是一种不好的做法,因为它被认为是一种循环依赖关系。。。然而;如果您首先使用实体框架代码,这几乎正是您在数据库中实现一对多关系的方式

这是一个糟糕的表格吗

仅当类
OrderHeader
OrderDetail
位于不同的项目中时,才可能在Visual Studio中出现“循环依赖项”错误。如果两者都在同一个项目中,那么就可以了

做记忆方面的事情是昂贵的吗

不是。它只是一个引用-64位(或32位,取决于目标平台)。相同的内存大小,如
long
number

但是,这取决于您的应用程序逻辑: 如果
OrderDetail
有自己的生命周期,则不再需要它的父级。但是您没有执行orderDetail.parentHdrRecord=null,那么垃圾收集器将不会删除父级以及所有未使用的子级

这是一个糟糕的表格吗

仅当类
OrderHeader
OrderDetail
位于不同的项目中时,才可能在Visual Studio中出现“循环依赖项”错误。如果两者都在同一个项目中,那么就可以了

做记忆方面的事情是昂贵的吗

不是。它只是一个引用-64位(或32位,取决于目标平台)。相同的内存大小,如
long
number

但是,这取决于您的应用程序逻辑:
如果
OrderDetail
有自己的生命周期,则不再需要它的父级。但是您没有执行orderDetail.parentHdrRecord=null,那么垃圾收集器将不会删除父级以及所有未使用的子级OrderHeader h = new OrderHeader(); h.orderNo = 12345; OrderDetail d = new OrderDetail(); d.rowNo = 1; d.info = "Test Row"; d.parentHdrRecord = h; h.dtlRows.Add(d);