Каково основное использование перечисления? - PullRequest
23 голосов
/ 19 августа 2010

Каково основное использование перечисления в c #?

Отредактировано: - Предположим, я хочу сравнить строковую переменную с любым элементом перечисления, как я могу это сделать в c #?

Ответы [ 10 ]

44 голосов
/ 19 августа 2010

Определение в MSDN - хорошее место для начала.

Тип перечисления (также называемый перечисление или перечисление) обеспечивает эффективный способ определить набор именованных интегральные константы, которые могут быть присваивается переменной.

Основным преимуществом этого является то, что на константы можно ссылаться последовательным, выразительным и безопасным для типов способом.

Возьмем, к примеру, этот очень простой Employee класс с конструктором:

Вы можете сделать это так:

public class Employee
{
    private string _sex;

    public Employee(string sex)
    {
       _sex = sex;
    }
}

Но теперь вы полагаетесь на то, что пользователи вводят правильное значение для этой строки.

Используя перечисления, вы можете вместо этого иметь:

public enum Sex
{
    Male = 10,
    Female = 20
}

public class Employee
{
    private Sex _sex;

    public Employee(Sex sex)
    {
       _sex = sex;
    }
}    

Это неожиданно позволяет потребителям класса Employee использовать его гораздо проще:

Employee employee = new Employee("Male");

Становится:

Employee employee = new Employee(Sex.Male);
23 голосов
/ 19 августа 2010

Часто вы обнаружите, что у вас есть что-то - данные, классификация, что угодно - что лучше всего выражать как одно из нескольких дискретных состояний, которые могут быть представлены целыми числами. Классический пример - месяцы года. Мы бы хотели, чтобы месяцы года были представлены как в виде строк («19 августа 2010 г.»), так и в виде чисел («19.08.2010»). Enum предоставляет краткий способ присвоения имен группе целых чисел, поэтому мы можем использовать простые циклы по целым числам для перемещения по месяцам.

8 голосов
/ 23 января 2014

Перечисления являются строго типизированными константами.Перечисления - это специальные наборы именованных значений, которые отображаются на набор чисел, обычно целых чисел.Они пригодятся, когда вы захотите выбрать между набором постоянных значений, и с каждым возможным значением, относящимся к числу, их можно использовать в широком диапазоне ситуаций.Как вы увидите в нашем примере, перечисления определены выше классов внутри нашего пространства имен.Это означает, что мы можем использовать перечисления из всех классов в одном и том же пространстве имен.

using System;

namespace ConsoleApplication1
{
    public enum Days { Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday }

    class Program
    {
        static void Main(string[] args)
        {
            Days day = Days.Monday;
            Console.WriteLine((int)day);
            Console.ReadLine();
        }
    }
}
5 голосов
/ 28 декабря 2013

Перечисление (Enum) является типом переменной. Мы можем найти этот тип переменной в C, C # и многих других языках. Основная идея Enum заключается в том, что если у нас есть группа переменных целочисленного типа (по умолчанию), то вместо использования слишком большого числа значений int просто используйте Enum. Это эффективный способ. Предположим, вы хотите написать цвета радуги, тогда вы можете написать так:

const int Red = 1;
const int Orange = 2;
const int Yellow = 3;
const int Green = 4;
const int Blue = 5;
const int Indigo = 6;
const int Violet = 7;

здесь вы можете увидеть, что слишком много int-объявлений. Если вы или ваша программа по ошибке измените значение любого целочисленного переменной, т.е. Violet = 115 вместо 7, то отладку будет очень сложно.

Итак, вот идет Enum. Вы можете определить Enum для любой группы переменных типа integer. Для Enum вы можете написать свой код так:

enum rainBowColors
{
 red=1,
 orange=2,
 yellow=3,
 green,
 blue=8,
 indigo=8,
 violet=16) 
}; 

rainBowColors - это тип, и ему могут быть назначены только другие переменные того же типа. В C # / C ++ вам нужно набирать приведение, а в C вы не печатаете приведение.

Теперь, если вы хотите объявить переменную типа rainBowColors, тогда в C

enum rainBowColors variableOne = red;

И в C # / C ++ вы можете сделать это как:

rainBowColors variableOne = red;
3 голосов
/ 19 августа 2010

В C # есть два значения перечисления.

Перечисление (существительное) - это набор именованных значений. Пример:

public enum Result {
  True,
  False,
  FileNotFound
}

Перечисление (существительная форма перечисления глагола) - это когда вы шагаете по элементам в коллекции.

Интерфейс IEnumerable<T> используется классами, которые предоставляют возможность перечисления. Массив является простым примером такого класса. Другой пример - как LINQ использует его для возврата результатов в виде перечислимых коллекций.

Edit:

Если вы хотите сравнить строку со значением перечисления, вы должны либо проанализировать строку с типом перечисления:

if ((Result)Enum.Parse(typeof(Result), theString) == Result.True) ...

или преобразовать значение перечисления в строку:

if (theString == Result.True.ToString()) ...

(Будьте внимательны при сравнении значений в зависимости от того, хотите ли вы регистрозависимое совпадение или нет.)

Если вы хотите перечислить коллекцию и найти строку, вы можете использовать команду foreach:

foreach (string s in theCollection) {
  if (s == theString) {
    // found
  }
}
3 голосов
/ 19 августа 2010

Тип перечисления (также называемый перечислением или перечислением) обеспечивает эффективный способ определения набора именованных интегральных констант, которые могут быть назначены переменной.

http://msdn.microsoft.com/en-us/library/cc138362.aspx

2 голосов
/ 28 сентября 2015

Перечисление (ENUM)

Перечисление - это тип значения с набором связанных именованных констант, часто называемых списком перечислителя. Ключевое слово enum используется для объявления перечисления. Это примитивный тип данных, который определяется пользователем.

Тип enums может быть целочисленным (float, int, byte, double и т. Д.). Но если вы использовали рядом с int, его нужно разыграть.

enum Days { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday };
enum Months : byte { Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec }; 
2 голосов
/ 23 апреля 2014

Другое преимущество использования Enum состоит в том, что в случае необходимости изменения любого целочисленного значения нам нужно изменить только определение Enum, и мы можем избежать повсеместного изменения кода.

0 голосов
/ 10 июня 2016

Перечисления в моем опыте работали в очень специфических случаях и должны использоваться, когда вам абсолютно необходимо поддерживать это в вашем приложении.Проблемы вступают в игру с Enums, когда вы работаете с несколькими разработчиками, и какой-то новый разработчик входит в проект и может добавить enum к приложению без ошибок, все строит, но тогда у вас есть другой разработчик полного стека, который поддерживает этот же список в поискестол в другом порядке. Kaboom !!!!

Прописал много раз с этим, даже если не преднамеренно.Эмпирическое правило не поддерживает список перечислений в приложении более 5 или 6 пунктов.Если оно выше, вы можете также сохранить их в справочной таблице в выбранной вами БД.

0 голосов
/ 06 августа 2015

Давайте рассмотрим пример: мы берем нормальную константу в классе, например, int a = 10;

, ошибочно назначая новое значение этой переменной в том же классе, как a = 20;тогда мы получим неправильные данные, когда захотим получить к ним доступ.enum обеспечивает безопасный способ доступа к константе.

Также, если у нас есть много констант feild в классе, мы должны были запомнить их, если мы хотим использовать их в классе.но enum содержит группу связанных констант имен, если мы хотим получить доступ к константе, то только нам нужно было запомнить имя enum.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...