![]() |
1
7
在这种情况下,使用封装而不是继承。 您应该让类实现ilist<t>,并有一个私有列表<t>变量。 您可以传递您希望传递的任何函数,但也可以完全重写它们、更改行为等。这将为您提供完全的控制(代价是拥有许多只调用此.list.method(…)的方法)。 一般来说,我认为在任何情况下从BCL集合类继承都不是一个好主意。我更喜欢在我的类中将它们作为内部实现细节。 |
![]() |
2
2
根据定义,列表是可变类型。没有办法使它成为只读的。 如果您正在生成派生类,那么您可能应该直接实现ilist<t>,而不是子类化列表<t>。这将使您能够完全控制实现,并允许您在需要时将其设置为只读。 |
![]() |
3
2
您可以调用列表上的“asreadonly”方法,该方法应返回一个IList实例,该实例应确保它是…err…只读的。 …好吧,我刚刚读了你最后一句话,我的错。在这种情况下,您可能只想实现IList接口或任何朋友,只需将接口的大部分路由到内部保存的列表。然后你可以建立这种行为。尽管如此,我还是会做一个类似的模式,提供一些“asreadonly”方法,显式地为您提供只读的东西。 |
![]() |
MWRazer · 在类-C上具有作为属性的函数++ 1 年前 |
![]() |
Vopel · 添加隐藏的属性,除非该属性具有值 2 年前 |
![]() |
Shane Amare · 构造函数和对象构造之间的区别是什么? 2 年前 |