|
1
122
我只想在这里补充一点,因为人们在很多次之后仍然会回到这个问题上来。当然,这是一种不好的做法,但仍然有可能(原则上)做作者想做的事情:
|
|
|
2
101
这是一种糟糕的编程实践,在C#中是不允许的。这是一种糟糕的编程实践,因为
|
|
|
3
22
你不能从C#开始。从IL来看,这实际上是受支持的。您可以对任何父类执行非virt调用。。。但请不要。:) |
|
|
4
10
答案(我知道这不是你想要的)是:
事实是,你只能与你继承的类直接互动。将该类视为一个层——为其派生类提供尽可能多或尽可能少的功能或其父类的功能。 编辑: 你的编辑很有效,但我想我会用这样的方式:
当然,在实际的实现中,为了扩展性和可维护性,您可能会做类似的事情:
然后,派生类可以适当地控制其父类的状态。 |
|
|
5
7
|
|
6
7
为什么不简单地将子类强制转换为特定的父类,然后调用特定的实现呢?这是一种特殊情况,应使用特殊情况解决方案。你必须使用
|
|
|
7
4
您还可以在一级派生类中生成一个简单的函数,以调用grand base函数 |
|
|
8
3
我的目标是实现在toolkit类中需要调用的功能,并在任何需要的地方调用它:
这确实需要考虑访问权限,您可能需要添加一些
|
|
|
9
1
如果您无权访问派生类源,但需要当前方法之外的所有派生类源,那么我建议您也应该执行派生类并调用派生类的实现。 下面是一个例子:
|
|
10
0
从之前的文章中可以看出,如果需要规避类功能,那么类架构中就有问题。这可能是真的,但在一个大型成熟项目中,不能总是重构或重构类结构。不同级别的变更管理可能是一个问题,但在重构后保持现有功能运行不变并不总是一项简单的任务,尤其是在时间限制适用的情况下。在一个成熟的项目中,在代码重组后,防止各种回归测试通过是一项相当艰巨的任务;经常会出现一些晦涩难懂的“怪事”。 在某些情况下,我们遇到了类似的问题,继承的功能不应该执行(或者应该执行其他操作)。下面我们采用的方法是将需要排除的基本代码放在一个单独的虚拟函数中。然后可以在派生类中重写该函数,并排除或更改该功能。在本例中,可以防止“文本2”在派生类中输出。
|
|
|
11
0
围绕着从祖辈类继承成员方法,在第二个类中重写它,然后从孙辈类再次调用它的方法,似乎有很多这样的问题。为什么不把祖父母的成员遗传给孙辈呢?
似乎很简单。。。。孙辈在这里继承了祖父母的方法。想想看。。。。。这就是C#中“Object”及其成员ToString()被继承到所有类的方式。我认为微软在解释基本继承方面做得不好。对多态性和实现的关注太多了。当我翻阅他们的文档时,没有任何关于这个非常基本的想法的例子( |
|
|
12
-3
如果您想访问基类数据,您必须使用“this”关键字,或者使用该关键字作为类的引用。
|
|
|
A B · C#Excel自动调整列避免长文本时出错 1 年前 |
|
|
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 1 年前 |
|
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 1 年前 |
|
|
Sei · Avalonia/WPF将路由器传递到控制模板 1 年前 |