C#:如何处理方法,是实现的源类别,但不是在母体中的类循环?

0

的问题

我有以下方法在我的班:

    public double ComputeCost()
    {
        double Cost = 0;
        foreach (GenericTask Task in this.GenericTasks){
            Cost += Task.Compute();
        }

        return Cost;
        
    }

问题是 Compute 方法只是实现的源类 GenericTask 例如 EngineeringTaskDevelopmentTask 因此上述代码没有编译。

我怎么能实现我想要什么? 我是新来C#不知道的"干净的方式"来实现这一目标? 我应该实现一个虚拟的 Compute 方法在 GenericTasks 虽然它永远不算什么,因为它缺乏适当的数据?

c# for-loop inheritance
2021-11-23 21:20:05
1

最好的答案

2

创建一个抽象的方法的基类有源类别复盖的方法。

基类:

public abstract double Compute();

源类:

public override double Compute()
{
    /* your class-specific implementation */
}

https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/override

https://en.wikipedia.org/wiki/Virtual_function

2021-11-23 21:25:42

除了什么@莫霍说,你可以读取更多关于多态性和压倒一切的理解面向对象的概念。
R.Abbasi

其他语言

此页面有其他语言版本

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................