Scurt pentru enumerare, un tip variabil enum poate fi găsit în C (ANSI, nu K&R original), C ++ și C #. Ideea este că, în loc de a utiliza un int pentru a reprezenta un set de valori, este utilizat un tip cu un set restrâns de valori.
De exemplu, dacă folosim culorile curcubeului, care sunt
Dacă enumerațiile nu ar exista, puteți utiliza o #defini (în C) sau const în C ++ / C # pentru a specifica aceste valori. De exemplu
Problema cu aceasta este că există multe mai multe int-uri decât culori. Dacă violetul are valoarea 7, iar programul atribuie o valoare de 15 unei variabile, atunci este clar un bug, dar nu poate fi detectat, deoarece 15 este o valoare valabilă pentru o int.
Un enum este un tip definit de utilizator constând dintr-un set de constante numite numite enumeratori. Culorile curcubeului vor fi asortate astfel:
Acum, intern, compilatorul va folosi o int pentru a reține aceste și dacă nu sunt furnizate valori, roșu va fi 0, portocaliu este 1 etc..
Ideea este că rainbowcolors este un tip și pot fi atribuite numai alte variabile de același tip. C merge mai ușor (adică mai puțin strict tipat), dar C ++ și C # nu vor permite alocarea decât dacă o forțați folosind o distribuție.
Nu sunteți blocat cu aceste valori generate de compilator, puteți să le atribuiți propria constantă întreagă așa cum se arată aici.
A avea albastru și indigo cu aceeași valoare nu este o greșeală, deoarece enumeratorii ar putea include sinonime precum stacojiu și crem.
În C, declarația variabilă trebuie să fie precedată de cuvânt enum ca în
Cu toate acestea, în C ++, nu este necesar ca rainbowcolors este un tip distinct care nu are nevoie de prefixul tip enum.
În C #, valorile sunt accesate de numele tipului ca în
Folosirea enumerărilor crește nivelul de abstractizare și permite programatorului să se gândească la ce înseamnă valorile, în loc să vă îngrijoreze modul în care sunt stocate și accesate. Acest lucru reduce apariția de erori.