C# : Cum să se ocupe de metoda care este pus în aplicare în clasele derivate, dar nu în clasa părinte într-o buclă?

0

Problema

Am urmatoarea metoda din clasa mea:

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

        return Cost;
        
    }

Problema este că Compute metoda este pusă în aplicare doar în clasele derivate din GenericTask de exemplu EngineeringTask și DevelopmentTask și, prin urmare, codul de mai sus nu compila.

Cum pot obține ceea ce vreau? Sunt nou in C# si nu stie de "curat" pentru a realiza acest lucru ? Voi pune în aplicare un manechin Compute metoda în GenericTasks desi nu se va mai calcula nimic, deoarece nu dispune de date corespunzătoare ?

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

Cel mai bun răspuns

2

A crea o metodă abstractă în clasa de bază și clase derivate suprascrie această metodă.

Clasa de baza:

public abstract double Compute();

Clasa derivată:

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

În plus față de ceea ce @Moho spus, puteți citi mai multe despre Polimorfism și Imperative de a înțelege concepte OOP.
R.Abbasi

În alte limbi

Această pagină este în alte limbi

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