C# 6.0 by Principe Pellegrino

C# 6.0 by Principe Pellegrino

autore:Principe, Pellegrino
La lingua: ita
Format: epub
ISBN: 978-88-503-1786-8
editore: Feltrinelli Editore
pubblicato: 2016-10-02T16:00:00+00:00


Al di là della doverosa e formale spiegazione di cosa sono le enumerazioni, vediamo di chiarire il motivo della loro esistenza, la loro utilità pratica. Partiamo dal delineare il seguente problema, spesso ricorrente nella scrittura di programmi: al posto di meri valori numerici vogliamo definire un insieme di nomi “significativi”, cioè nomi in grado di esprimere in modo chiaro e leggibile, nel punto del codice dove sono impiegati, cosa rappresentano.

Se volessimo esprimere valori atti a rappresentare i punti cardinali vorremmo poterlo fare dichiarando un oggetto di un qualche tipo che possa accettare direttamente valori quali NORD, NORD-EST, EST, SUD-EST, SUD, SUD-OVEST, OVEST e NORD-OVEST piuttosto che 0 per NORD, 1 per NORD-EST e così via per gli altri.

Per farlo potremmo utilizzare singoli membri dati costanti di tipo int, ma questa tecnica presenta, tra gli altri, il seguente inconveniente: non evidenzia in modo chiaro se questi membri sono “correlati” in un qualche tipo; i loro nomi sono infatti utilizzati nell’ambito del codice in modo individuale, slegato da un qualsiasi contesto (ricordiamo che il nostro obiettivo è quello di definire un tipo che agisca come “contenitore” dei punti cardinali e solo per il suo tramite utilizzarli).

Ecco, quindi, che l’impiego di un’enumerazione mostra tutta la sua utilità: essa delinea un nuovo tipo deputato in modo esplicito a contenere un insieme di valori ricavabili tramite nomi o simboli significativi e correlati e che sono utilizzabili nell’ambito di un programma al posto di singole variabili slegate o, peggio, di “magic number”.

Listato 7.45 Enumerations.cs (Enumerations).

using System;

namespace LibroCSharp.Capitolo7

{

// il tipo sottostante è di default int ma può essere cambiato con una sintassi

// come, per esempio, enum CardinalPoints : short { ... } indicando cioè

// dopo il nome dell'enum il simbolo : e il nome del tipo sottostante

enum CardinalPoints // tipo enumerato CardinalPoints : int

{

NORTH,

NORTH_EAST,

EAST,

SOUTH_EAST,

SOUTH,

SOUTH_WEST,

WEST,

NORTH_WEST

}

class Enumerations

{

static void Main(string[] args)

{

// cp è una variabile di tipo CardinalPoints che contiene

// come valore iniziale CardinalPoints.NORTH

CardinalPoints cp = CardinalPoints.NORTH;

// assegnamento esplicito lecito!

// cp è, di fatto, trattato come il tipo intero sottostante attribuito

// value conterrà come valore il valore intero di NORTH che in assenza

// di una specifica attribuzione è 0

int value = (int)cp;

Console.WriteLine("Valore di value: {0}", value);

// assegnamento esplicito lecito!

// cp è, di fatto, trattato come il tipo intero sottostante attribuito

// tuttavia il valore 10 non è tra quelli ricavabili dalle rispettive costanti

// di enumerazione e tale assegnamento non dovrebbe mai essere fatto!

cp = (CardinalPoints)10;

// si noti la leggibilità del codice

// in assenza di un enum avremmo dovuto utilizzare qualcosa come:

// case 0: case 1: e così via, che di sicuro, sono "magic number" poco chiari!

switch (cp) // lecito utilizzare un enum in un costrutto switch

{

case CardinalPoints.NORTH: Console.WriteLine("NORTH"); break;

case CardinalPoints.NORTH_EAST: Console.WriteLine("NORTH_EAST"); break;

case CardinalPoints.EAST: Console.WriteLine("EAST"); break;

case CardinalPoints.SOUTH_EAST: Console.WriteLine("SOUTH_EAST"); break;

case CardinalPoints.SOUTH: Console.WriteLine("SOUTH"); break;

case CardinalPoints.SOUTH_WEST: Console.WriteLine("SOUTH_WEST"); break;

case CardinalPoints.WEST: Console.WriteLine("WEST"); break;

case CardinalPoints.NORTH_WEST: Console.WriteLine("NORTH_WEST"); break;

default: Console.WriteLine("Valore sconosciuto: {0}", cp); break;

}

}

}

}

Output 7.25 Dal Listato Enumerations.cs.

Valore di value: 0

Valore sconosciuto: 10

Il Listato 7.45 dichiara l’enumerazione CardinalPoints con costanti di enumerazione atte a descrivere i punti cardinali, e poi definisce la relativa variabile cp inizializzata con il valore CardinalPoints.NORTH.

NOTA

Nell’ambito



scaricare



Disconoscimento:
Questo sito non memorizza alcun file sul suo server. Abbiamo solo indice e link                                                  contenuto fornito da altri siti. Contatta i fornitori di contenuti per rimuovere eventuali contenuti di copyright e inviaci un'email. Cancelleremo immediatamente i collegamenti o il contenuto pertinenti.
Ebooks popolari
Designing Mobile Interfaces by Steven Hoober & Eric Berkman(2208)
Mobile HTML5 by Estelle Weyl(2154)
La Sicurezza Informatica. Tra informatica, matematica e diritto (Italian Edition) by Francesca Cirini(1920)
Hello World by Hannah Fry(1904)
Il Manuale Di Arduino by Maik Schmidt(1743)
Linux server per l'amministratore di rete: per Ubuntu, CentOS e Fedora (Italian Edition) by Silvio Umberto Zanzi(1491)
Nel paese degli algoritmi by Aurélie Jean(1475)
Esercizi Di Stile by Unknown(1263)
Sviluppare in PHP 7: Realizzare applicazioni web e API professionali (Italian Edition) by Enrico Zimuel(1099)
E-LEARNING by E-learning(1057)
PYTHON : Il manuale per imparare a programmare. Contiene esempi di codice ed esercizi pratici. (Italian Edition) by Frost Oscar R(1041)
Tutto Mac for dummies: iPhone, iPad, MacBook, iCloud e molto altro by Simone Gambirasio(1035)
Novacene by James Lovelock(1014)
Automatizzare le cose noiose con Python: Programmazione pratica per principianti assoluti (Italian Edition) by Sweigart Al(1001)
9 algoritmi che hanno cambiato il futuro by MacCormick John(949)
Comprendere gli Algoritmi e i diagrammi di flusso passo-passo: Esempi con ausili grafici e tabellari, esercizi e codifica in linguaggio C (Italian Edition) by Luciano Manelli(926)
Amazon by Sconosciuto(914)
WEB DEVELOPMENT: La guida completa allo sviluppo web lato client. Impara a programmare con esercizi pratici ed esempi di codice. Include HTML, CSS, PHP, PYTHON, MySQL (Italian Edition) by Ferrati Alberto(897)
On Writing by Stephen King(895)
Android 4 by Massimo Carli(887)