95 messaggi dal 20 maggio 2001
Ho appena letto il capitolo relativo alle enumerazioni e l'argomento sembra essere abbastanza complesso!!!Qualcuno di voi potrebbe spiegarmi in parole povere cosa sono e a cosa servono?Ecco il codice d'esempio del libro:

using System;

namespace Wrox.Prova.Enumerazioni
{
    public enum TimeOfDay
    {
        Morning = 0,
        Afternoon = 1,
        Evening = 2
    }
    class EnumExample
    {
        public static int Main()
        {
            WriteGreeting(TimeOfDay.Morning);
            return 0;
        }
        static void WriteGreeting(TimeOfDay timeOfDay)
        {
            switch (timeOfDay)
            {
                case TimeOfDay.Morning:
                    Console.WriteLine("Good morning!");
                    break;
                case TimeOfDay.Afternoon:
                    Console.WriteLine("Good afternoon!");
                    break;
                case TimeOfDay.Evening:
                    Console.WriteLine("Good evening!");
                    break;
                default:
                    Console.WriteLine("Hello!");
                    break;
            }
        }
    }
}

Sono costanti personalizzabili per elenchi di valori (una definizione più breve sfido a trovarla  )

Prova a leggere il tuo esempio, e invece di utilizzare le enum mettere valori numerici. Non appare più complessa la lettura del codice?
Ciao

Andrea Zani
Undicesimo comandamento: NON utilizzare Explorer 6
In C# esiste il tipo enum (enumerazione) che permette di definire un insieme chiuso di valori. Questo tipo di dato torna comodo per obbligare una variabile a contenere solo una serie finita di valori pre-individuati come, per esempio, potrebbero essere i mesi dell'anno o i giorni della settimana.


La parola chiave enum permette di definire l'elenco dei valori ammissibili per un particolare tipo di valore che di default è int a partire da zero.

public enum TimeOfDay
{
Morning = 0,
Afternoon = 1,
Evening = 2
}

Nel caso dell'esempio, le variabili di tipo TimeOfDay possono contenere solo i tre valori presenti nell'enumerazione, ovvero 0, 1, 2. Il valore numerico viene identificato tramite l'etichetta definita nella dichiarazione dell'enum (per esempio: Afternoon vale 1).

Attenzione al cast! TimeOfDay è un sottoinsieme di interi, ma non è il tipo int. Quindi occhio alle conversioni da int a TimeOfDay e viceversa che sono possibili se e solo se i valori sono ammissibili (ovvero inclusi nella enum: 0, 1, 2).


Ciao, Ricky.

Ing. Riccardo Golia
Microsoft MVP ASP.NET/IIS
ASPItalia.com Content Manager
http://blogs.aspitalia.com/rickyvr
http://ricky.aspitalia.com
http://www.riccardogolia.it
95 messaggi dal 20 maggio 2001
Ok, grazie, ora la cosa è più chiara, un'ultima domanda:

{ 
WriteGreeting(TimeOfDay.Morning); 
return 0; 
} 
static void WriteGreeting(TimeOfDay timeOfDay) 
{ 


Questo codice non mi è affatto chiaro..... esattamente, qual'è la sua funzione?
WriteGreeting(TimeOfDay.Morning);

static void WriteGreeting(TimeOfDay timeOfDay) { }

Il metodo WriteGreeting() scrive il saluto in base al periodo del giorno. Accetta un enumerazione come parametro in input per discriminare tra i vari saluti possibili. Dato che il parametro è di tipo enumerativo e l'enumerazione è composta da tre elementi, i saluti possibili saranno molto presumibilmente tre, uno per ogni elemento di TimeOfDay.

L'uso dell'enumerazione forza il metodo ad accettare unicamente i tre valori TimeOfDay.Morning, TimeOfDay.Afternoon e TimeOfDay.Evening a cui corrispondono gli interi 0, 1 e 2.

Come tipo per l'argomento si sarebbe potuto usare int, ma in tal caso i valori ammissibili sarebbero stati tutti gli interi a 32 bit, senza restizioni.

L'uso delle enumerazioni si rivela prezioso quando si vuole definire un insieme di valori dello stesso tipo ristretto e ben delineato, come nel caso di TimeOfDay.


Ciao, Ricky.

Ing. Riccardo Golia
Microsoft MVP ASP.NET/IIS
ASPItalia.com Content Manager
http://blogs.aspitalia.com/rickyvr
http://ricky.aspitalia.com
http://www.riccardogolia.it

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.
Community
Ultimi messaggi
UTENTI ONLINE
In primo piano

I più letti di oggi

Media
In evidenza
MISC