Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«C# 4.0 ΠΏΠΎΠ»Π½ΠΎΠ΅ руководство - 2011Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 91

Автор Π“Π΅Ρ€Π±Π΅Ρ€Ρ‚ Π¨ΠΈΠ»Π΄Ρ‚

Π›ΡŽΠ±ΠΎΠΏΡ‹Ρ‚Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π² C++ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ структуры ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово struct. Но эти структуры ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΎΡ‚ Ρ‚Π΅Ρ…, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ Π² Π‘#. Π’Π°ΠΊ, Π² C++ структура относится ΠΊ Ρ‚ΠΈΠΏΡƒ класса, Π° Π·Π½Π°Ρ‡ΠΈΡ‚, структура ΠΈ класс Π² этом языкС практичСски Ρ€Π°Π²Π½ΠΎΡ†Π΅Π½Π½Ρ‹ ΠΈ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π° лишь доступом ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΊ ΠΈΡ… Ρ‡Π»Π΅Π½Π°ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌΠΈ для класса ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌΠΈ для структуры. А Π² C# структура относится ΠΊ Ρ‚ΠΈΠΏΡƒ значСния, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ класс β€” ΠΊ ссылочному Ρ‚ΠΈΠΏΡƒ.

ΠŸΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»Π΅Π½ΠΈΡ

ΠŸΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»Π΅Π½ΠΈΠ΅ прСдставляСт собой мноТСство ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Ρ… цСлочислСнных констант. ΠŸΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΠΌΡ‹ΠΉ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова enum. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° общая Ρ„ΠΎΡ€ΠΌΠ° объявлСния пСрСчислСния:

enum имя { список_пСрСчислСния} ;

Π³Π΄Π΅ имя β€” это имя Ρ‚ΠΈΠΏΠ° пСрСчислСния, Π° список_пСрСчислСния β€” список ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ², раздСляСмый запятыми.

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π½ΠΈΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ пСрСчислСниС Apple Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… сортов яблок.

enum Apple { Jonathan, GoldenDel, RedDel, Winesap,

Cortland, McIntosh };

Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ особо ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠ½ΡƒΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ каТдая символичСски обозначаСмая константа Π² пСрСчислСнии ΠΈΠΌΠ΅Π΅Ρ‚ Ρ†Π΅Π»ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ нСявныС прСобразования пСрСчислимого Ρ‚ΠΈΠΏΠ° Π²ΠΎ встроСнныС цСлочислСнныС Ρ‚ΠΈΠΏΡ‹ ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² C# Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹, Π° Π·Π½Π°Ρ‡ΠΈΡ‚, Π² ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… случаях трСбуСтся явноС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ². ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ² трСбуСтся ΠΏΡ€ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΈ Π΄Π²ΡƒΡ… пСрСчислимых Ρ‚ΠΈΠΏΠΎΠ². Но ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ пСрСчислСния ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ Ρ†Π΅Π»Ρ‹Π΅ значСния, Ρ‚ΠΎ ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для управлСния ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ Π²Ρ‹Π±ΠΎΡ€Π° switch ΠΈΠ»ΠΈ ΠΆΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ Ρ†ΠΈΠΊΠ»Π° for.

Для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ символичСски ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅ΠΌΠΎΠΉ константы Π² пСрСчислСнии задаСтся Ρ†Π΅Π»ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ большС, Ρ‡Π΅ΠΌ Ρƒ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ константы. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π²ΠΎΠΉ символичСски ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅ΠΌΠΎΠΉ константы Π² пСрСчислСнии Ρ€Π°Π²Π½ΠΎ Π½ΡƒΠ»ΡŽ. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ пСрСчислСния Apple константа Jonathan Ρ€Π°Π²Π½Π° Π½ΡƒΠ»ΡŽ, константа GoldenDel β€” 1, константа RedDel β€” 2 ΠΈ Ρ‚.Π΄.

Доступ ΠΊ Ρ‡Π»Π΅Π½Π°ΠΌ пСрСчислСния осущСствляСтся ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ ΠΈΡ… Ρ‚ΠΈΠΏΠ°, послС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ слСдуСт ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€-Ρ‚ΠΎΡ‡ΠΊΠ°. НапримСр, ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° ΠΊΠΎΠ΄Π°

Console.WriteLine(Apple.RedDel + " ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ " +

(int)Apple.RedDel) ;

выводится ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.

RedDel ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 2

Как ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹ΡˆΠ΅ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° ΠΊΠΎΠ΄Π°, для Π²Ρ‹Π²ΠΎΠ΄Π° пСрСчислимого значСния ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π΅Π³ΠΎ имя. Но для получСния этого значСния трСбуСтся ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ привСсти Π΅Π³ΠΎ ΠΊ Ρ‚ΠΈΠΏΡƒ int.

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ пСрСчислСния Apple.

11 ΠŸΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ пСрСчислСния.

using System;

class EnumDemo {

enum Apple { Jonathan, GoldenDel, RedDel, Winesap,

Cortland, McIntosh };

static void Main() { string[] color = {

"красный",

"ΠΆΠ΅Π»Ρ‚Ρ‹ΠΉ",

"красный",

"красный",

"красный",

"красновато-Π·Π΅Π»Π΅Π½Ρ‹ΠΉ"

};

Apple i; 11 ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ пСрСчислимого Ρ‚ΠΈΠΏΠ°

// Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ i для цикличСского

// обращСния ΠΊ Ρ‡Π»Π΅Π½Π°ΠΌ пСрСчислСния.

for(i = Apple.Jonathan; i <= Apple.McIntosh; i++)

Console.WriteLine(i + " ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ " + (int)i);

Console.WriteLine ();

// Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ пСрСчислСниС для индСксирования массива. for(i = Apple.Jonathan; i <= Apple.McIntosh; i++)

Console.WriteLine("Π¦Π²Π΅Ρ‚ сорта " + i + " β€” " + color[ (int)i]);

}

}

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния этой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Jonathan ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ О GoldenDel ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 1 RedDel ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 2 Winsap ΠΈΠΌΠ΅Π΅Ρ‚- Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 3 Cortland ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 4 McIntosh ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 5

Π¦Π²Π΅Ρ‚ сорта Jonathan - красный

Π¦Π²Π΅Ρ‚ сорта GoldenDel - ΠΆΠ΅Π»Ρ‚Ρ‹ΠΉ

Π¦Π²Π΅Ρ‚ сорта RedDel - красный

Π¦Π²Π΅Ρ‚ сорта Winsap - красный

Π¦Π²Π΅Ρ‚ сорта Cortland - красный

Π¦Π²Π΅Ρ‚ сорта McIntosh - красновато-Π·Π΅Π»Π΅Π½Ρ‹ΠΉ

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎ, ΠΊΠ°ΠΊ пСрСмСнная Ρ‚ΠΈΠΏΠ° Apple управляёт Ρ†ΠΈΠΊΠ»Π°ΠΌΠΈ for. ЗначСния символичСски ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅ΠΌΡ‹Ρ… констант Π² пСрСчислСнии Apple Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ с нуля, поэтому ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для индСксирования массива, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ†Π²Π΅Ρ‚ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ сорта яблок. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ², ΠΊΠΎΠ³Π΄Π° пСрСчислимоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для индСксирования массива. Как ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡŒ Π²Ρ‹ΡˆΠ΅, Π² C# Π½Π΅ прСдусмотрСны нСявныС прСобразования пСрСчислимых Ρ‚ΠΈΠΏΠΎΠ² Π² цСлочислСнныС ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ, поэтому для этой Ρ†Π΅Π»ΠΈ трСбуСтся явноС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ².

И Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΎ Π·Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: всС пСрСчислСния нСявно Π½Π°ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ ΠΎΡ‚ класса System. Enum, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ наслСдуСт ΠΎΡ‚ класса System. ValueType, Π° Ρ‚ΠΎΡ‚, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, β€” ΠΎΡ‚ класса object.

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ пСрСчислСния

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… символичСски ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅ΠΌΡ‹Ρ… констант Π² пСрСчислСнии ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π°. Для этого достаточно ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ послС символичСского обозначСния ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ константы Π·Π½Π°ΠΊ равСнства ΠΈ Ρ†Π΅Π»ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. КаТдой ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ константС присваиваСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ большС значСния ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ константы. НапримСр, Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π½ΠΈΠΆΠ΅ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π΅ ΠΊΠΎΠ΄Π° константС RedDel присваиваСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 10.

enum Apple { Jonathan, GoldenDel, RedDel = 10, Winesap,

Cortland, McIntosh };

Π’ ΠΈΡ‚ΠΎΠ³Π΅ всС константы Π² пСрСчислСнии ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ Π½ΠΈΠΆΠ΅ значСния.

Jonathan

0

GoldenDel

1

RedDel

10

Winesap

11

Cortland

12

McIntosh

13

Π£ΠΊΠ°Π·Π°Π½ΠΈΠ΅ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° пСрСчислСния

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π² качСствС Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ для пСрСчислСний выбираСтся Ρ‚ΠΈΠΏ int, Ρ‚Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ пСрСчислСниС ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ создано любого цСлочислСнного Ρ‚ΠΈΠΏΠ°, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ char. Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ‚ΠΈΠΏ, ΠΊΡ€ΠΎΠΌΠ΅ int, достаточно ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ этот Ρ‚ΠΈΠΏ послС ΠΈΠΌΠ΅Π½ΠΈ пСрСчислСния, ΠΎΡ‚Π΄Π΅Π»ΠΈΠ² Π΅Π³ΠΎ Π΄Π²ΠΎΠ΅Ρ‚ΠΎΡ‡ΠΈΠ΅ΠΌ. Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π½ΠΈΠΆΠ΅ задаСтся Ρ‚ΠΈΠΏ byte для пСрСчислСния Apple.

enum Apple : byte { Jonathan, GoldenDel, RedDel,

Winesap, Cortland, McIntosh };

Π’Π΅ΠΏΠ΅Ρ€ΡŒ константа Apple . Winesap, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΠΌΠ΅Π΅Ρ‚ количСствСнноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° byte.

ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ пСрСчислСний

На ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ взгляд пСрСчислСния ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π»ΡŽΠ±ΠΎΠΏΡ‹Ρ‚Π½Ρ‹ΠΌ, Π½ΠΎ Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ Π½ΡƒΠΆΠ½Ρ‹ΠΌ элСмСнтом Π‘#, Π½ΠΎ Π½Π° самом Π΄Π΅Π»Π΅ это Π½Π΅ Ρ‚Π°ΠΊ. ΠŸΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»Π΅Π½ΠΈΡ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹, ΠΊΠΎΠ³Π΄Π° Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ трСбуСтся ΠΎΠ΄Π½Π° ΠΈΠ»ΠΈ нСсколько ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… символичСски ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅ΠΌΡ‹Ρ… констант. Допустим, Ρ‡Ρ‚ΠΎ трСбуСтся Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ для управлСния Π»Π΅Π½Ρ‚ΠΎΠΉ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π° Π½Π° Ρ„Π°Π±Ρ€ΠΈΠΊΠ΅. Для этой Ρ†Π΅Π»ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ Conveyor (), ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰ΠΈΠΉ Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹: "старт", "стоп", "Π²ΠΏΠ΅Ρ€Π΅Π΄" ΠΈ "Π½Π°Π·Π°Π΄". ВмСсто Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ Conveyor () Ρ†Π΅Π»Ρ‹Π΅ значСния, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 1 β€” Π² качСствС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ "старт", 2 β€” Π² качСствС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ "стоп" ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅, Ρ‡Ρ‚ΠΎ Ρ‡Ρ€Π΅Π²Π°Ρ‚ΠΎ ошибками, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ пСрСчислСниС, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ этим значСниям ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ символичСскиС обозначСния. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ примСнСния Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°.

// Π‘Ρ‹ΠΌΠΈΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π»Π΅Π½Ρ‚ΠΎΠΉ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π°, using System;

class ConveyorControl {

// ΠŸΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π°.

public enum Action { Start, Stop, Forward, Reverse };

public void Conveyor(Action com) { switch(com) {

case Action.Start:

Console.WriteLine("Π—Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€."); break; case Action.Stop:

Console.WriteLine("ΠžΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€."); break; case Action.Forward:

*    Console.WriteLine("ΠŸΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ Π²ΠΏΠ΅Ρ€Π΅Π΄.");

break; case Action.Reverse:

Console.WriteLine ("ΠŸΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ Π½Π°Π·Π°Π΄."); break;

}

}

}

class ConveyorDemo { static void Main() {

ConveyorControl с = new ConveyorControl();

с.Conveyor(ConveyorControl.Action.Start);

с.Conveyor(ConveyorControl.Action.Forward);

с.Conveyor(ConveyorControl.Action.Reverse);

с.Conveyor(ConveyorControl.Action.Stop);

}

}

Π’ΠΎΡ‚ ΠΊ ΠΊΠ°ΠΊΠΎΠΌΡƒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρƒ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ этого ΠΊΠΎΠ΄Π°.

Π—Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ Π²ΠΏΠ΅Ρ€Π΅Π΄.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ Π½Π°Π·Π°Π΄.

ΠžΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€.

ΠœΠ΅Ρ‚ΠΎΠ΄ Conveyor () ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Ρ‚ΠΈΠΏΠ° Action, ΠΈ поэтому Π΅ΠΌΡƒ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ значСния, опрСдСляСмыС Π² пСрСчислСнии Action. НапримСр, Π½ΠΈΠΆΠ΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ Conveyor () Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 22.

с.Conveyor(22); // Ошибка!