Este artigo foi traduzido por máquina. Coloque o ponteiro do mouse sobre as frases do artigo para ver o texto original. Mais informações.
Tradução
Original
1 de 1 pessoas classificaram isso como útil - Avalie este tópico

Classe Enum

Fornece a classe base para enumerações.

Namespace:  System
Assembly:  mscorlib (em mscorlib.dll)
[SerializableAttribute]
[ComVisibleAttribute(true)]
public abstract class Enum : ValueType, 
	IComparable, IFormattable, IConvertible

O tipo Enum expõe os membros a seguir.

  NomeDescrição
Método protegidoCompatível com o XNA FrameworkEnumInitializes a new instance of the Enum class.
Início
  NomeDescrição
Método públicoCompatível com o XNA FrameworkCompareToCompara essa instância para um objeto especificado e retorna uma indicação de seus valores relativos.
Método públicoCompatível com o XNA FrameworkEqualsRetorna um valor que indica se esta instância é igual a um objeto especificado. (Substitui ValueType.Equals(Object).)
Método protegidoCompatível com o XNA FrameworkFinalize Permite que um objeto tente liberar recursos e executar outras operações de limpeza antes que ele seja recuperado pela coleta de lixo. (Herdado de Object.)
Método públicoMembro estáticoFormatConverte o valor especificado de um tipo enumerado especificado em sua representação de seqüência equivalente de acordo com o formato especificado.
Método públicoCompatível com o XNA FrameworkGetHashCodeRetorna o código hash para o valor desta instância. (Substitui ValueType.GetHashCode().)
Método públicoMembro estáticoGetNameRecupera o nome da constante na enumeração especificada que tem o valor especificado.
Método públicoMembro estáticoGetNamesRecupera uma matriz dos nomes das constantes em uma enumeração especificada.
Método públicoCompatível com o XNA FrameworkGetType Obtém o Type da instância atual. (Herdado de Object.)
Método públicoCompatível com o XNA FrameworkGetTypeCodeRetorna a base TypeCode para esta instância.
Método públicoMembro estáticoCompatível com o XNA FrameworkGetUnderlyingTypeRetorna o tipo subjacente da enumeração especificado.
Método públicoMembro estáticoGetValuesRecupera uma matriz dos valores das constantes em uma enumeração especificada.
Método públicoHasFlagDetermina se um ou mais campos de bit são definidos na instância atual.
Método públicoMembro estáticoCompatível com o XNA FrameworkIsDefinedRetorna uma indicação se uma constante com um valor especificado existe em uma enumeração especificada.
Método protegidoCompatível com o XNA FrameworkMemberwiseCloneCria uma cópia superficial do Object atual. (Herdado de Object.)
Método públicoMembro estáticoParse(Type, String)Converte um objeto enumerado equivalente a representação de seqüência de caracteres do nome ou valor numérico de uma ou mais constantes enumeradas.
Método públicoMembro estáticoCompatível com o XNA FrameworkParse(Type, String, Boolean)Converte um objeto enumerado equivalente a representação de seqüência de caracteres do nome ou valor numérico de uma ou mais constantes enumeradas. Um parâmetro especifica se a operação é diferencia maiúsculas de minúsculas.
Método públicoMembro estáticoToObject(Type, Byte)Converte o inteiro não assinado de 8 bits especificado para um membro de enumeração.
Método públicoMembro estáticoToObject(Type, Int16)Converte o inteiro assinado de 16 bits especificado para um membro de enumeração.
Método públicoMembro estáticoToObject(Type, Int32)Converte o inteiro assinado de 32 bits especificado para um membro de enumeração.
Método públicoMembro estáticoToObject(Type, Int64)Converte o inteiro assinado de 64 bits especificado para um membro de enumeração.
Método públicoMembro estáticoCompatível com o XNA FrameworkToObject(Type, Object)Converte o objeto especificado com um valor inteiro em um membro de enumeração.
Método públicoMembro estáticoToObject(Type, SByte)Converte o valor inteiro assinado de 8 bits especificado para um membro de enumeração.
Método públicoMembro estáticoToObject(Type, UInt16)Converte o valor de inteiro não assinado de 16 bits especificado para um membro de enumeração.
Método públicoMembro estáticoToObject(Type, UInt32)Converte o valor de inteiro não assinado de 32 bits especificado para um membro de enumeração.
Método públicoMembro estáticoToObject(Type, UInt64)Converte o valor de inteiro não assinado de 64 bits especificado para um membro de enumeração.
Método públicoCompatível com o XNA FrameworkToString()Converte o valor desta instância em sua representação de seqüência equivalente. (Substitui ValueType.ToString().)
Método públicoCompatível com o XNA FrameworkToString(IFormatProvider) Obsoleta. Essa sobrecarga de método está obsoleta; use Enum.ToString().
Método públicoCompatível com o XNA FrameworkToString(String)Converte o valor desta instância em sua representação de seqüência equivalente usando o formato especificado.
Método públicoCompatível com o XNA FrameworkToString(String, IFormatProvider) Obsoleta. Essa sobrecarga de método está obsoleta; use Enum.ToString(String).
Método públicoMembro estáticoTryParse<TEnum>(String, TEnum)Converte um objeto enumerado equivalente a representação de seqüência de caracteres do nome ou valor numérico de uma ou mais constantes enumeradas. O valor de retorno indica se a conversão teve êxito.
Método públicoMembro estáticoTryParse<TEnum>(String, Boolean, TEnum)Converte um objeto enumerado equivalente a representação de seqüência de caracteres do nome ou valor numérico de uma ou mais constantes enumeradas. Um parâmetro especifica se a operação é diferencia maiúsculas de minúsculas. O valor de retorno indica se a conversão teve êxito.
Início
  NomeDescrição
Implementação explícita da interfaceMétodo particularCompatível com o XNA FrameworkIConvertible.ToBooleanInfraestrutura. Converte o valor atual para um valor booleano baseado no tipo subjacente.
Implementação explícita da interfaceMétodo particularCompatível com o XNA FrameworkIConvertible.ToByteInfraestrutura. Converte o valor atual para um inteiro não assinado de 8 bits baseado no tipo subjacente.
Implementação explícita da interfaceMétodo particularCompatível com o XNA FrameworkIConvertible.ToCharInfraestrutura. Converte o valor atual para um caractere Unicode com base no tipo subjacente.
Implementação explícita da interfaceMétodo particularCompatível com o XNA FrameworkIConvertible.ToDateTimeInfraestrutura. Converte o valor atual para um DateTime com base no tipo subjacente.
Implementação explícita da interfaceMétodo particularCompatível com o XNA FrameworkIConvertible.ToDecimalInfraestrutura. Converte o valor atual para um Decimal com base no tipo subjacente.
Implementação explícita da interfaceMétodo particularCompatível com o XNA FrameworkIConvertible.ToDoubleInfraestrutura. Converte o valor atual para uma flutuante de precisão dupla de ponto de número com base no tipo subjacente.
Implementação explícita da interfaceMétodo particularCompatível com o XNA FrameworkIConvertible.ToInt16Infraestrutura. Converte o valor atual para um inteiro assinado de 16 bits baseado no tipo subjacente.
Implementação explícita da interfaceMétodo particularCompatível com o XNA FrameworkIConvertible.ToInt32Infraestrutura. Converte o valor atual para um inteiro assinado de 32 bits com base no tipo subjacente.
Implementação explícita da interfaceMétodo particularCompatível com o XNA FrameworkIConvertible.ToInt64Infraestrutura. Converte o valor atual para um inteiro assinado de 64 bits com base no tipo subjacente.
Implementação explícita da interfaceMétodo particularCompatível com o XNA FrameworkIConvertible.ToSByteInfraestrutura. Converte o valor atual para um inteiro assinado de 8 bits com base no tipo subjacente.
Implementação explícita da interfaceMétodo particularCompatível com o XNA FrameworkIConvertible.ToSingleInfraestrutura. Converte o valor atual para um número de ponto flutuante de precisão simples com base no tipo subjacente.
Implementação explícita da interfaceMétodo particularCompatível com o XNA FrameworkIConvertible.ToTypeInfraestrutura. Converte o valor atual para um tipo especificado com base no tipo subjacente.
Implementação explícita da interfaceMétodo particularCompatível com o XNA FrameworkIConvertible.ToUInt16Infraestrutura. Converte o valor atual para um inteiro não assinado de 16 bits baseado no tipo subjacente.
Implementação explícita da interfaceMétodo particularCompatível com o XNA FrameworkIConvertible.ToUInt32Infraestrutura. Converte o valor atual para um inteiro não assinado de 32 bits com base no tipo subjacente.
Implementação explícita da interfaceMétodo particularCompatível com o XNA FrameworkIConvertible.ToUInt64Infraestrutura. Converte o valor atual para um inteiro não assinado de 64 bits com base no tipo subjacente.
Início

Uma enumeração é um conjunto de constantes cuja base digite nomeadas qualquer tipo integral exceto Char. Se nenhum tipo subjacente é explicitamente declarado, Int32 é usado. Enum é a classe base para todas as enumerações na.NET Framework.

Enum Fornece métodos para comparar instâncias dessa classe, convertendo o valor de uma instância em sua representação de seqüência de caracteres, converter a representação de seqüência de caracteres de um número a uma instância dessa classe e criando uma instância de enumeração especificada e valor.

Você também pode tratar uma enumeração como um campo de bits. Para obter mais informações, consulte o os membros não-exclusiva e o atributo de sinalizadores seção e o FlagsAttribute tópico.

Criação de um tipo de enumeração

Linguagens de programação geralmente fornecem sintaxe para declarar uma enumeração que consiste em um conjunto de constantes nomeadas e seus valores. O exemplo a seguir ilustra a sintaxe usada por C# e Visual Basic para definir uma enumeração. Ele cria uma enumeração denominada ArrivalStatus que tem três membros: ArrivalStatus.Early, ArrivalStatus.OnTime, e ArrivalStatus.Late. Observe que em ambos os casos, a enumeração explicitamente herda de Enum; a relação de herança é tratada implicitamente pelo compilador.


public enum ArrivalStatus { Late=-1, OnTime=0, Early=1 };


Observação de cuidadoCuidado

Você nunca deve criar um tipo de enumeração cujo tipo subjacente é não integral. Embora você possa criar um tipo de enumeração usando reflexão, chamadas de método, usam o tipo resultante não são confiáveis e também podem lançar exceções adicionais.

Criar uma instância de um tipo de enumeração

Você pode instanciar um tipo de enumeração da mesma forma que você criar uma instância de qualquer outro tipo de valor: declarar uma variável e atribuindo uma das constantes da enumeração para ele. O exemplo a seguir instancia um ArrivalStatus cujo valor é ArrivalStatus.OnTime.


public class Example
{
   public static void Main()
   {
      ArrivalStatus status = ArrivalStatus.OnTime;
      Console.WriteLine("Arrival Status: {0} ({0:D})", status);
   }
}
// The example displays the following output:
//       Arrival Status: OnTime (0)


Você também pode instanciar um valor de enumeração das seguintes maneiras:

  • Usando os recursos da linguagem de programação específica para difusão (como C#) ou converter um valor inteiro (como em Visual Basic) para um valor de enumeração. O exemplo a seguir cria um ArrivalStatus objeto cujo valor é ArrivalStatus.Early na forma.

    
    ArrivalStatus status2 = (ArrivalStatus) 1;
    Console.WriteLine("Arrival Status: {0} ({0:D})", status2);
    // The example displays the following output:
    //       Arrival Status: Early (1)
    
    
    
  • Chamando seu construtor padrão implícitos. Como mostra o exemplo a seguir, neste caso o valor subjacente da instância de enumeração é 0. No entanto, isso não é necessariamente o valor de uma constante válido na enumeração.

    
    ArrivalStatus status1 = new ArrivalStatus();
    Console.WriteLine("Arrival Status: {0} ({0:D})", status1);
    // The example displays the following output:
    //       Arrival Status: OnTime (0)
    
    
    
  • Chamando o Parse ou TryParse método para analisar uma cadeia de caracteres que contém o nome de uma constante da enumeração. Para obter mais informações, consulte o De análise de valores de enumeração seção.

  • Chamando o ToObject método para converter um valor inteiro para um tipo de enumeração. Para obter mais informações, consulte o Realizar conversões seção.

As práticas recomendadas de enumeração

Recomendamos que você use as seguintes práticas recomendadas ao definir os tipos de enumeração:

  • Se você não tiver definido um membro de enumeração cujo valor é 0, considere a criação de um None enumerados constante. Por padrão, a memória usada para a enumeração é inicializada para zero, o common language runtime. Conseqüentemente, se você não definir uma constante cujo valor é zero, a enumeração conterá um valor ilegal quando ele é criado.

  • Se há um caso padrão óbvio que o seu aplicativo deve representar, considere usar um enumerados constante cujo valor é zero para representá-lo. Se não houver nenhum caso padrão, considere o uso de uma constante enumerada cujo valor é zero para especificar o caso em que não esteja representado por qualquer uma das constantes enumeradas.

  • Não especifica constantes enumeradas que são reservados para uso futuro.

  • Quando você define um método ou propriedade que leva a uma constante enumerada como um valor, considere a possibilidade de validar o valor. O motivo é que você pode converter um valor numérico para o tipo de enumeração, mesmo se esse valor numérico não está definido na enumeração.

Práticas recomendadas para os tipos de enumeração cujos constantes são campos de bits estão listadas na os membros não-exclusiva e o atributo de sinalizadores seção.

Executar operações com enumerações

Você não pode definir novos métodos quando você estiver criando uma enumeração. No entanto, um tipo de enumeração herda um conjunto completo de estática e métodos de instância da Enum classe. As seções a seguir a maior parte desses métodos, além de vários outros métodos que são usados com freqüência ao trabalhar com valores de enumeração de pesquisa.

Realização de conversões

Você pode converter entre um membro de enumeração e seu tipo subjacente usando um elenco (em C#) ou o operador de conversão (em Visual Basic). O exemplo a seguir usa os operadores de maiúsculas e minúsculas ou de conversão para realizar conversões de inteiro para um valor de enumeração e a partir de um valor de enumeração como um inteiro.


int value3 = 2;
ArrivalStatus status3 = (ArrivalStatus) value3;

int value4 = (int) status3;


O Enum classe também inclui um ToObject método que converte um valor de qualquer tipo integral para um valor de enumeração. O exemplo a seguir usa a ToObject método para converter um Int32 para um ArrivalStatus valor. Observe que, devido a ToObject retorna um valor do tipo Object, o uso de um operador ou de conversão ainda pode ser necessário caso o objeto para o tipo de enumeração.


int number = -1;
ArrivalStatus arrived = (ArrivalStatus) ArrivalStatus.ToObject(typeof(ArrivalStatus), number);


Ao converter um número inteiro para um valor de enumeração, é possível atribuir um valor que não é realmente um membro da enumeração. Para evitar isso, você pode passar o inteiro para o IsDefined método antes de executar a conversão. O exemplo a seguir usa esse método para determinar se os elementos em uma matriz de valores inteiros podem ser convertidos em ArrivalStatus valores.


using System;

public enum ArrivalStatus { Unknown=-3, Late=-1, OnTime=0, Early=1 };

public class Example
{
   public static void Main()
   {
      int[] values = { -3, -1, 0, 1, 5, Int32.MaxValue };
      foreach (var value in values)
      {
         ArrivalStatus status;
         if (Enum.IsDefined(typeof(ArrivalStatus), value))
            status = (ArrivalStatus) value;
         else
            status = ArrivalStatus.Unknown;
         Console.WriteLine("Converted {0:N0} to {1}", value, status);
      }
   }
}
// The example displays the following output:
//       Converted -3 to Unknown
//       Converted -1 to Late
//       Converted 0 to OnTime
//       Converted 1 to Early
//       Converted 5 to Unknown
//       Converted 2,147,483,647 to Unknown


Embora o Enum classe fornece implementações de interface explícita do IConvertible interface para conversão de um valor de enumeração de tipo integral, você deve usar os métodos da Convert de classe, como ToInt32, para executar essas conversões. O exemplo a seguir ilustra como você pode usar o GetUnderlyingType método juntamente com o Convert.ChangeType método para converter um valor de enumeração para seu tipo subjacente. Observe que este exemplo não requer o tipo subjacente da enumeração conhecido em tempo de compilação.


ArrivalStatus status = ArrivalStatus.Early;
var number = Convert.ChangeType(status, Enum.GetUnderlyingType(typeof(ArrivalStatus)));
Console.WriteLine("Converted {0} to {1}", status, number);
// The example displays the following output:
//       Converted Early to 1


A análise de valores de enumeração

O Parse e TryParse métodos permitem que você converta a representação de seqüência de caracteres de um valor de enumeração para o valor. A representação de seqüência de caracteres pode ser o nome ou o valor subjacente de uma constante de enumeração. Observe que os métodos de análise converter com êxito o representações de seqüência de números que não são membros de uma enumeração específico se as seqüências de caracteres podem ser convertidas para um valor de tipo subjacente da enumeração. Para evitar isso, o IsDefined método pode ser chamado para garantir que o resultado do método de análise é um valor de enumeração válidos. O exemplo ilustra essa abordagem e demonstra a chamadas para ambos os Parse e Enum.TryParse<TEnum>(String, TEnum) métodos. Observe que o método de análise não genéricas retorna um objeto que você pode ter a difusão (C#) ou converter o tipo de enumeração apropriado (em Visual Basic).


string number = "-1";
string name = "Early";

try {
   ArrivalStatus status1 = (ArrivalStatus) Enum.Parse(typeof(ArrivalStatus), number);
   if (!(Enum.IsDefined(typeof(ArrivalStatus), status1)))
      status1 = ArrivalStatus.Unknown;
   Console.WriteLine("Converted '{0}' to {1}", number, status1);
}
catch (FormatException) {
   Console.WriteLine("Unable to convert '{0}' to an ArrivalStatus value.", 
                     number);
}   

ArrivalStatus status2;
if (Enum.TryParse<ArrivalStatus>(name, out status2)) {
   if (!(Enum.IsDefined(typeof(ArrivalStatus), status2)))
      status2 = ArrivalStatus.Unknown;
   Console.WriteLine("Converted '{0}' to {1}", name, status2);
}
else {
   Console.WriteLine("Unable to convert '{0}' to an ArrivalStatus value.", 
                     number);
}
// The example displays the following output:
//       Converted '-1' to Late
//       Converted 'Early' to Early


Valores de enumeração de formatação

Você pode converter valores de enumeração para suas representações de seqüência de caracteres chamando estática Format método, bem como os métodos sobrecarregados da instância de ToString método. Você pode usar uma seqüência de caracteres de formato para controlar a maneira precisa em que um valor de enumeração é representado como uma seqüência de caracteres. For more information, see Sequências de Caracteres de Formatação de Enumeração. O exemplo a seguir usa a cada uma das seqüências de caracteres de formato de enumeração com suporte para converter um membro da ArrivalStatus enumeração para suas representações de seqüência de caracteres.


string[] formats= { "G", "F", "D", "X"};
ArrivalStatus status = ArrivalStatus.Late;
foreach (var fmt in formats)
   Console.WriteLine(status.ToString(fmt));

// The example displays the following output:
//       Late
//       Late
//       -1
//       FFFFFFFF


Os membros de enumeração de iteração

O Enum o tipo não implementa o IEnumerable ou IEnumerable<T> interface, que permite que você iterar os membros de uma coleção usando um foreach (em C#) ou For Each (em Visual Basic) construção. No entanto, você pode enumerar os membros em uma destas duas maneiras.

  • Você pode chamar o GetNames método para recuperar uma matriz de cadeia de caracteres que contém os nomes dos membros de enumeração. Em seguida, para cada elemento da matriz de cadeia de caracteres, você pode chamar o Parse método para converter a seqüência de caracteres para o valor de enumeração equivalente. O exemplo a seguir ilustra essa abordagem.

    
    string[] names = Enum.GetNames(typeof(ArrivalStatus));
    Console.WriteLine("Members of {0}:", typeof(ArrivalStatus).Name);
    Array.Sort(names);
    foreach (var name in names) {
       ArrivalStatus status = (ArrivalStatus) Enum.Parse(typeof(ArrivalStatus), name);
       Console.WriteLine("   {0} ({0:D})", status);
    }
    // The example displays the following output:
    //       Members of ArrivalStatus:
    //          Early (1)
    //          Late (-1)
    //          OnTime (0)
    //          Unknown (-3)      
    
    
    
  • Você pode chamar o GetValues método para recuperar uma matriz que contém os valores subjacentes da enumeração. Em seguida, para cada elemento da matriz, você pode chamar o ToObject método para converter o inteiro para o valor de enumeração equivalente. O exemplo a seguir ilustra essa abordagem.

    
    var values = Enum.GetValues(typeof(ArrivalStatus));
    Console.WriteLine("Members of {0}:", typeof(ArrivalStatus).Name);
    foreach (var value in values) {
       ArrivalStatus status = (ArrivalStatus) Enum.ToObject(typeof(ArrivalStatus), value);
       Console.WriteLine("   {0} ({0:D})", status);
    }                                       
    // The example displays the following output:
    //       Members of ArrivalStatus:
    //          OnTime (0)
    //          Early (1)
    //          Unknown (-3)
    //          Late (-1)
    
    
    

Os membros não-exclusiva e o atributo de sinalizadores

Um uso comum de uma enumeração é representar um conjunto de valores mutuamente exclusivos. Por exemplo, um ArrivalStatus instância pode ter um valor de Early, OnTime, ou Late. Não faz sentido para o valor de um ArrivalStatus instância para refletir a mais de uma constante de enumeração.

Em outros casos, entretanto, o valor de um objeto de enumeração pode incluir vários membros de enumeração e cada membro representa um campo de bit no valor de enumeração. O FlagsAttribute atributo pode ser usado para indicar que a enumeração consiste campos de bit. Por exemplo, uma enumeração denominada Pets pode ser usado para indicar os tipos de animais de estimação em casa. Podem ser definido da seguinte maneira.


[Flags] public enum Pets { None=0, Dog=1, Cat=2, Bird=4, Rodent=8,
                           Reptile=16, Other=32 };



O Pets enumeração pode ser usada como mostrado no exemplo a seguir.


Pets familyPets = Pets.Dog | Pets.Cat;
Console.WriteLine("Pets: {0:G} ({0:D})", familyPets);
// The example displays the following output:
//       Pets: Dog, Cat (3)      


Práticas recomendadas a seguir devem ser usadas ao definir o bit a bit de enumeração e aplicando o FlagsAttribute atributo.

  • Use o FlagsAttribute atributo personalizado para uma enumeração somente se uma operação bit a bit (AND, OR ou exclusivo) é para ser executada em um valor numérico.

  • Defina constantes de enumeração em potências de dois, ou seja, 1, 2, 4, 8 e assim por diante. Isso significa que os sinalizadores individuais em constantes de enumeração combinados não se sobreponham.

  • Considere a criação de uma constante enumerada para combinações de sinalizador comumente usados. Por exemplo, se você tiver uma enumeração usada para operações de e/S de arquivo que contém as constantes enumeradas Read = 1 e Write = 2, considere a possibilidade de criar a constante enumerada ReadWrite = Read OR Write, que combina o Read e Write sinalizadores. Além disso, a operação OR bit a bit usada para combinar os sinalizadores pode ser considerada um conceito avançado em algumas circunstâncias que não deve ser exigida para tarefas simples.

  • Tenha cuidado se você definir um número negativo como uma constante enumerada de sinalizador porque muitos posições de sinalizador podem ser definidas como 1, que pode tornar seu código confuso e incentivar a erros de codificação.

  • Uma maneira conveniente de testar se um sinalizador é definido em um valor numérico é chamar a instância HasFlag método, conforme mostrado no exemplo a seguir.

    
    Pets familyPets = Pets.Dog | Pets.Cat;
    if (familyPets.HasFlag(Pets.Dog))
       Console.WriteLine("The family has a dog.");
    // The example displays the following output:
    //       The family has a dog.      
    
    
    

    Ele equivale a executar uma operação a bit entre o valor numérico e a constante enumerada de sinalizador, que define todos os bits no valor numérico em zero que não correspondem ao sinalizador, e em seguida, teste se o resultado dessa operação é igual a constante enumerada de sinalizador. Isso é ilustrado no exemplo a seguir.

    
    Pets familyPets = Pets.Dog | Pets.Cat;
    if ((familyPets & Pets.Dog) == Pets.Dog)
       Console.WriteLine("The family has a dog.");
    // The example displays the following output:
    //       The family has a dog.      
    
    
    
  • Use None como o nome da constante enumerada sinalizador cujo valor é zero. Não é possível usar o None uma constante enumerada em uma operação a bit para testar um sinalizador porque o resultado é sempre zero. No entanto, você pode executar uma lógica, não uma comparação bit a bit, entre o valor numérico e a None uma constante enumerada para determinar se qualquer bits no valor numérico definido. Isso é ilustrado no exemplo a seguir.

    
    Pets familyPets = Pets.Dog | Pets.Cat;
    if (familyPets == Pets.None)
       Console.WriteLine("The family has no pets.");
    else
       Console.WriteLine("The family has pets.");   
    // The example displays the following output:
    //       The family has pets.      
    
    
    
  • Não defina um valor de enumeração exclusivamente para espelhar o estado da própria enumeração. Por exemplo, não defina uma constante enumerada que simplesmente marca o final da enumeração. Se você precisa determinar o último valor da enumeração, verificar esse valor explicitamente. Além disso, você pode executar uma verificação de intervalo para a constante enumerada primeiro e último se todos os valores no intervalo são válidos.

O exemplo a seguir demonstra o uso de uma enumeração para representar valores nomeados e outra enumeração para representar os campos de bit nomeado.


using System;

public class EnumTest {
    enum Days { Saturday, Sunday, Monday, Tuesday, Wednesday, Thursday, Friday };
    enum BoilingPoints { Celsius = 100, Fahrenheit = 212 };
    [FlagsAttribute]
    enum Colors { Red = 1, Green = 2, Blue = 4, Yellow = 8 };

    public static void Main() {

        Type weekdays = typeof(Days);
        Type boiling = typeof(BoilingPoints);

        Console.WriteLine("The days of the week, and their corresponding values in the Days Enum are:");

        foreach ( string s in Enum.GetNames(weekdays) )
            Console.WriteLine( "{0,-11}= {1}", s, Enum.Format( weekdays, Enum.Parse(weekdays, s), "d"));

        Console.WriteLine();
        Console.WriteLine("Enums can also be created which have values that represent some meaningful amount.");
        Console.WriteLine("The BoilingPoints Enum defines the following items, and corresponding values:");

        foreach ( string s in Enum.GetNames(boiling) )
            Console.WriteLine( "{0,-11}= {1}", s, Enum.Format(boiling, Enum.Parse(boiling, s), "d"));

        Colors myColors = Colors.Red | Colors.Blue | Colors.Yellow;
        Console.WriteLine();
        Console.WriteLine("myColors holds a combination of colors. Namely: {0}", myColors);
    }
}


.NET Framework

Com suporte em: 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Com suporte em: 4, 3.5 SP1

Windows 7, Windows Vista SP1 ou posterior, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core não compatível), Windows Server 2008 R2 (Server Core não compatível com SP1 ou posterior), Windows Server 2003 SP2

O .NET Framework não oferece suporte a todas as versões de cada plataforma. Para obter uma lista das versões com suporte, consulte Requisitos de sistema do .NET Framework.

Esse tipo é de Thread de segurança.

Data

Histórico

Motivo

Junho de 2010

Revisado exaustivamente.

Comentários do cliente.

Isso foi útil para você?
(1500 caracteres restantes)

Contribuições da comunidade

ADICIONAR
A Microsoft está realizando uma pesquisa online para saber sua opinião sobre o site do MSDN. Se você optar por participar, a pesquisa online lhe será apresentada quando você sair do site do MSDN.

Deseja participar?
© 2013 Microsoft. Todos os direitos reservados.