为什么我不能在从它派生时访问List <T>的类内部?

Joa*_*nge 0 .net c# inheritance list

class NewList<T> : List<T>
Run Code Online (Sandbox Code Playgroud)

为什么我不能访问它的内部T[] _items等等?

为什么他们不受保护,而是私人?

我应该为此使用合成吗?

Ree*_*sey 7

它们是私有的,因为作者(Microsoft)并不打算让您访问它们,可能是出于安全原因.

您应该使用组合而不是继承.让你的课暴露,IList<T>而不是List<T>直接.

List<T>永远不应该直接暴露在公共API中(这实际上是在设计指南中指定的).它应仅用作内部实现细节.

  • 正确api和封装的主要目标之一是一种安全形式 - 您正在保护自己的外部世界. (3认同)