• 13 Marzo 2008
  • 1 Stella2 Stelle3 Stelle4 Stelle5 Stelle Nessun voto

Vincoli Generic

In C# esistono 5 vincoli da poter utilizzare quando si crea un metodo generico.

Ma intanto vediamo a cosa possono servire, facciamo un esempio:

class TestClass<t>
{
public static T GetMaxValue(params T[] values)
{
T max = values[0];
for (int j = 1; j < values.Length; j++)
{
if (values[j] > max)
{
max = values[j];
}
}
return max;
}
}

Questo codice è apparentemente perfetto ed il metodo GetMaxValue trova il numero più grande data una lista che gli viene passata come parametro.

Quando andremo a compilare, però, ci verrà segnalato il seguente errore:

Operator ‘>’ cannot be applied to operands of type ‘T’ and ‘T’

Questo perché, essendo T un valore generico, quindi sia magari può essere int o double, ma può anche essere ad esempio di tipo string.

Per cose come queste si ricorre ai vincoli generic, questi sono in totale 5:

struct e class

Indicano che il tipo generico deve essere una variabile value (struct) o reference (class).

vincolo di interfaccia e vincolo di classe

Indicano che il tipo generico deve estendere una data interfaccia o una data classe.

vincolo new()

Indica che il tipo passato come generic ha un costruttore pubblico senza parametri.

Vediamo un esempio dell’uso del vincolo di interfaccia:

class TestClass where T : IComparable
{
public static T GetMaxValue(params T[] values)
{
T max = values[0];
for (int j = 1; j < values.Length; j++)
{
if (values[j].CompareTo(max) > 0)
{
max = values[j];
}
}
return max;
}
}

Come possiamo vedere aggiungendo il vincolo al tipo generico T di estensione di IComparable ora abbiamo a disposizione il metodo CompareTo, che possiamo usare per sostituire il maggiore (>) che usavamo prima e quindi far compilare correttamente il programma.

RSScommenti all'articolo (0)

scrivi commento

Nome:

Email:

Url:




E’ con immensa soddisfazione che comunico che mondoinformatico.info ha superato i 1.000 articoli pubblicati!

Ebbene si, sembra incredibile ma tantissimi di voi hanno scritto molti articoli, alcuni molto interessanti, altri meno ma tutti originali, unici e in tema.

Il traguardo…

Ultimi Articoli Commenti

Inserisci il tuo indirizzo e-mail per rimanere aggiornato sulle novità del sito.

  • SONDAGGIO
Che notizie vorresti trovare su mondoinformatico?
Visualizza risultati
  • CRITEO
  • CHATTING

utenti online

Ci sono attualmente 0 utenti e 1 ospiti collegati