包含相同对象类型列表的对象

zsh*_*arp 4 c# oop

定义这样的东西有什么问题:

     class ObjectA
      {
         property a;
         property b;
         List <ObjectA> c;
         ...
      }
Run Code Online (Sandbox Code Playgroud)

pho*_*oog 7

不,因为答案至少需要30个字符,我会补充说这是一个常见的模式.

oop但是,由于您包含了标记,我将补充说,此模式可以为外界提供很多控制.c例如,如果是子项列表,则表示您允许有权访问ObjectA实例的每个人添加,删除或替换其子项.

更严格的方法是使用某种只读类型(可能是实现IList<ObjectA>)来暴露孩子.

编辑

请注意,以下内容仍允许其他人修改您的列表:

 class ObjectA 
  { 
     property a; 
     property b; 
     List <ObjectA> c; 
     ... 
     public List<ObjectA> Children { get { return c; } }
  } 
Run Code Online (Sandbox Code Playgroud)

缺少setter只会阻止外人替换列表对象.


Dan*_*ite 6

不.那是完全可以接受的.树结构这样做.