![]() |
1
7
在这种情况下,使用封装而不是继承。 您应该让类实现ilist<t>,并有一个私有列表<t>变量。 您可以传递您希望传递的任何函数,但也可以完全重写它们、更改行为等。这将为您提供完全的控制(代价是拥有许多只调用此.list.method(…)的方法)。 一般来说,我认为在任何情况下从BCL集合类继承都不是一个好主意。我更喜欢在我的类中将它们作为内部实现细节。 |
![]() |
2
2
根据定义,列表是可变类型。没有办法使它成为只读的。 如果您正在生成派生类,那么您可能应该直接实现ilist<t>,而不是子类化列表<t>。这将使您能够完全控制实现,并允许您在需要时将其设置为只读。 |
![]() |
3
2
您可以调用列表上的“asreadonly”方法,该方法应返回一个IList实例,该实例应确保它是…err…只读的。 …好吧,我刚刚读了你最后一句话,我的错。在这种情况下,您可能只想实现IList接口或任何朋友,只需将接口的大部分路由到内部保存的列表。然后你可以建立这种行为。尽管如此,我还是会做一个类似的模式,提供一些“asreadonly”方法,显式地为您提供只读的东西。 |
![]() |
Pikachu620 · 在Visual C中运行时编译# 7 年前 |
![]() |
N6151H · 使用annotate()包括django模型对象属性 7 年前 |
![]() |
Rekshino · 在编译时获取类的属性名,而不进行对象实例化 7 年前 |
![]() |
Mahhdy · VBA类模块:从类内的对象获取属性 7 年前 |
|
user5441558 · c中get前缀背后的原因# 7 年前 |
|
user9409572 · 无法更改属性的值 7 年前 |