定义这样的东西有什么问题:
class ObjectA
{
property a;
property b;
List <ObjectA> c;
...
}
Run Code Online (Sandbox Code Playgroud)
不,因为答案至少需要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只会阻止外人替换列表对象.