Τι Είναι τα Generics;
Φαντάσου ότι έχεις ένα μεγάλο κουτί που μπορείς να γεμίσεις με διάφορα είδη παιχνιδιών, όπως αυτοκίνητα, κούκλες ή τουβλάκια. Αν το κουτί ήταν ειδικά σχεδιασμένο μόνο για αυτοκίνητα, δεν θα μπορούσες να βάλεις άλλα είδη παιχνιδιών μέσα του.
Τώρα, φαντάσου ένα κουτί που μπορεί να προσαρμοστεί για να χωράει οποιοδήποτε είδος παιχνιδιού, όποιο και αν είναι αυτό. Αυτό είναι σαν τα generics στον προγραμματισμό. Σου επιτρέπει να δημιουργείς ένα “γενικό” κουτί που μπορεί να περιέχει διάφορους τύπους αντικειμένων, χωρίς να χρειάζεται να ξαναγράψεις τον κώδικα για κάθε τύπο.
Πώς Λειτουργούν τα Generics;
- Δημιουργία Γενικού Κουτιού:
- Δημιουργείς ένα γενικό κώδικα ή κλάση που μπορεί να λειτουργήσει με οποιοδήποτε τύπο δεδομένων.
- Χρήση Κουτιών με Διαφορετικά Παιχνίδια:
- Όταν χρειάζεσαι το κουτί, λες τι είδος παιχνιδιού θέλεις να βάλεις μέσα (π.χ., αυτοκίνητα ή κούκλες), και το κουτί προσαρμόζεται.
Παράδειγμα στην C#
Ας δούμε πώς μπορούμε να χρησιμοποιήσουμε generics στην C# με ένα απλό παράδειγμα.
- Δημιουργία Γενικής Κλάσης:
using System;
// Δημιουργούμε μια γενική κλάση που μπορεί να αποθηκεύσει οποιοδήποτε τύπο δεδομένων
public class Box<T>
{
private T content;
// Μέθοδος για να βάλουμε κάτι μέσα στο κουτί
public void Put(T item)
{
content = item;
}
// Μέθοδος για να πάρουμε κάτι από το κουτί
public T Get()
{
return content;
}
}
class Program
{
static void Main(string[] args)
{
// Δημιουργούμε ένα κουτί για αυτοκίνητα
Box<string> carBox = new Box<string>();
carBox.Put("Αυτοκίνητο");
Console.WriteLine("Το κουτί περιέχει: " + carBox.Get());
// Δημιουργούμε ένα κουτί για αριθμούς
Box<int> numberBox = new Box<int>();
numberBox.Put(123);
Console.WriteLine("Το κουτί περιέχει: " + numberBox.Get());
}
}
Τι Κάνουμε Εδώ:
- Δημιουργία Γενικής Κλάσης:
Box<T>
: Αυτή η κλάση μπορεί να αποθηκεύσει οποιοδήποτε τύπο δεδομένων (T
). Εδώ,T
είναι ένας τύπος που καθορίζουμε όταν δημιουργούμε το κουτί.
- Χρήση της Κλάσης:
- Δημιουργούμε ένα κουτί για αυτοκίνητα (
Box<string>
) και βάζουμε μέσα μια λέξη. - Δημιουργούμε ένα κουτί για αριθμούς (
Box<int>
) και βάζουμε μέσα έναν αριθμό. - Χρησιμοποιούμε τις μεθόδους
Put
καιGet
για να βάλουμε και να πάρουμε αντικείμενα από το κουτί.
- Δημιουργούμε ένα κουτί για αυτοκίνητα (
Συνοπτικά
- Generics: Επιτρέπουν τη δημιουργία γενικών κλάσεων και μεθόδων που μπορούν να δουλέψουν με οποιονδήποτε τύπο δεδομένων.
- Ευέλικτος Κώδικας: Σου επιτρέπει να γράψεις κώδικα που είναι ευέλικτος και επαναχρησιμοποιήσιμος χωρίς να χρειάζεται να επαναλαμβάνεις τον ίδιο κώδικα για διαφορετικούς τύπους δεδομένων.