Sobes.tech
Junior

Τι είναι η υπερφόρτωση μεθόδων σε C#;

sobes.tech AI

Απάντηση από AI

Η υπερφόρτωση μεθόδων (Method Overloading) στη C# επιτρέπει τον ορισμό πολλαπλών μεθόδων στην ίδια κλάση με το ίδιο όνομα, αλλά με διαφορετικές υπογραφές.

Υπογραφή μεθόδου περιλαμβάνει:

  • Το όνομα της μεθόδου.
  • Τον αριθμό και τους τύπους των παραμέτρων στη λίστα παραμέτρων.

Δεν περιλαμβάνεται στην υπογραφή:

  • Τον τύπο επιστροφής.
  • Τους τροποποιητές παραμέτρων (π.χ., ref, out).

Παράδειγμα:

// Κλάση με υπερφορτωμένες μεθόδους
public class Calculator
{
    // Υπερφόρτωση 1: Πρόσθεση δύο ακέραιων
    public int Add(int a, int b)
    {
        return a + b;
    }

    // Υπερφόρτωση 2: Πρόσθεση δύο δεκαδικών (άλλοι τύποι παραμέτρων)
    public double Add(double a, double b)
    {
        return a + b;
    }

    // Υπερφόρτωση 3: Πρόσθεση τριών ακέραιων
    public int Add(int a, int b, int c)
    {
        return a + b + c;
    }

    // Αυτό ΔΕΝ είναι υπερφόρτωση: διαφέρει μόνο από τον τύπο επιστροφής
    /*
    public double Add(int a, int b)
    {
        return (double)(a + b);
    }
    */
}

Ο μεταγλωττιστής καθορίζει ποια μέθοδο θα καλέσει κατά τη διάρκεια της μεταγλώττισης, βασιζόμενος στους τύπους και τον αριθμό των ορισμάτων που περνιούνται στην κλήση. Αυτό είναι γνωστό ως στατική δέσμευση (Static Binding) ή πρώιμη δέσμευση (Early Binding).

Πλεονεκτήματα της υπερφόρτωσης μεθόδων:

  • Βελτιώνει την αναγνωσιμότητα και τη χρηστικότητα του κώδικα.
  • Παρουσιάζει παρόμοιες λειτουργίες υπό ένα όνομα, αλλά για διαφορετικούς τύπους δεδομένων ή με διαφορετικά σύνολα εισόδου παραμέτρων.