Uvod:

Generičke metode omogućavaju definisanje metoda koji mogu raditi sa različitim tipovima podataka, bez potrebe za pisanjem posebnog koda za svaki tip. One pružaju veću fleksibilnost i omogućavaju ponovnu upotrebu koda.

Primer iz stvarnog sveta:

Zamislite da imate kutiju koja može držati bilo koji predmet - knjige, voće, ili alat. Umesto da pravite različite kutije za svaki predmet, pravite jednu kutiju koja može primiti bilo koji predmet. Slično tome, generičke metode omogućavaju da pišete jednu funkciju koja može raditi sa različitim tipovima podataka.

Ključni pojmovi:
  • Generički tip parametra: Tip podataka koji metoda može prihvatiti kao argument.
  • Generička metoda: Metoda koja koristi tip parametra, omogućavajući rad sa različitim tipovima podataka.
Sintaksa jedne generičke metode u C#:
public void PrintArray<T>(T[] inputArray)
{
foreach (T element in inputArray)
{
Console.Write(element + " ");
}
Console.WriteLine();
}

  • <T> označava generički tip parametra.
  • PrintArray je metoda koja može štampati niz bilo kog tipa (npr. int, string, itd.).
Kako funkcionišu generičke metode:
  1. Deklaracija: U deklaraciji metode koristi se generički tip (npr. <T>), što omogućava metodi da prihvata argumente različitih tipova.
  2. Implementacija: Unutar metode, generički tip se koristi kao bilo koji drugi tip podataka.
  3. Poziv metode: Pri pozivanju generičke metode, kompajler automatski određuje konkretan tip na osnovu prosleđenih argumenata.

Primeri korišćenja:
  1. Primer sa nizovima:

class Program
{
static void Main(string[] args)
{
int[] intArray = { 1, 2, 3, 4, 5 };
string[] stringArray = { "Hello", "World" };

PrintArray(intArray);
PrintArray(stringArray);
}

public static void PrintArray<T>(T[] inputArray)
{
foreach (T element in inputArray)
{
Console.Write(element + " ");
}
Console.WriteLine();
}
}

U ovom primeru, metoda PrintArray radi sa nizovima različitih tipova podataka.

2. Primer sa generičkom metodom koja vraća vrednost:

public static T FindMax<T>(T x, T y, T z) where T : IComparable<T>
{
T max = x;

if (y.CompareTo(max) > 0)
{
max = y;
}
if (z.CompareTo(max) > 0)
{
max = z;
}
return max;
}

Ova metoda vraća maksimalnu vrednost između tri uporediva elementa.

Zadaci za vežbu:

  1. Implementacija generičke metode za pronalaženje minimuma: Napisati metodu FindMin koja vraća minimalnu vrednost između tri elementa.
  2. Proširivanje primera sa nizovima: Kreirati metodu PrintArray koja treba da ispiše sve elemente niza redom, bez obzira na tip podataka u nizu.

Pitanja za diskusiju:

  1. Koje su prednosti korišćenja generičkih metoda u odnosu na tradicionalne metode?
  2. Kako kompajler određuje koji tip da koristi prilikom poziva generičke metode?
  3. Možete li smisliti primere iz stvarnog života gde bi generičke metode bile korisne?
  4. Koje druge generičke funkcionalnosti postoje u C#, osim metoda?

Last modified: Friday, 13 September 2024, 9:09 PM