Aracılığıyla paylaş


enum (C# Başvurusu)

enum Anahtar sözcüğünü bir numaralandırma Adlandırılmış sabitlere numaralayıcı listesi adı verilen bir dizi oluşan ayrı bir türü bildirmek için kullanılır.

Genellikle ad alanındaki tüm sınıfları ile eşit kolaylık erişebilmeleri doğrudan bir ad alanı içinde bir enum tanımlamak en iyisidir.Ancak, bir enum bir sınıf veya yapı birimi içinde yuvalanabilir.

Varsayılan olarak, ilk numaralayıcı değeri 0 olan ve birbirini izleyen her numaralayıcı değeri 1 ile başlar.Aşağıdaki numaralandırma, örneğin, Sat olan 0, Sun olan 1, Mon olan 2, ve benzeri.

enum Days {Sat, Sun, Mon, Tue, Wed, Thu, Fri};

Numaralandırıcıları başlatıcılar varsayılan değerleri geçersiz kılmak için aşağıdaki örnekte gösterildiği gibi kullanabilirsiniz.

enum Days {Sat=1, Sun, Mon, Tue, Wed, Thu, Fri};

Bu numaralandırma içinde öğelerin sırasını başlatmayı zorla 1 yerine 0.Ancak, değeri 0 olan bir sabit de önerilir.Daha fazla bilgi için bkz. Numaralandırma Türleri (C# Programlama Kılavuzu).

Herhangi bir tamsayı türü olabilir bir temel türü her numaralandırma türü olan dışında char.Temel alınan tür numaralandırma öğelerinin varsayılan int.Başka bir tam sayı türü bir enum gibi bildirmek için bayt, bir iki nokta üst üste ve ardından türünü, tanımlayıcı sonra aşağıdaki örnekte gösterildiği gibi kullanın.

enum Days : byte {Sat=1, Sun, Mon, Tue, Wed, Thu, Fri};

The approved types for an enum are byte, sbyte, short, ushort, int, uint, long, or ulong.

Türünde bir değişken Days ; temel alınan tür aralığında herhangi bir değer atanabilir değerler için Adlandırılmış sabitlere sınırlı değildir.

Varsayılan değer olan bir enum E ifade tarafından üretilen değeri (E)0.

[!NOT]

Bir numaralayıcı adında beyaz boşluk içeremez.

Ne kadarlık bir depolama alanı için her bir numaralayıcı ayrılan arka plandaki türünü belirtir.Ancak, açık bir tonunu dönüştürmek için gerekli olan enum türü tamsayı türü için.Örneğin, aşağıdaki deyim numaralayıcı atar Sun türünde bir değişken için int dönüştürmek için bir dönüştürme işlemi kullanarak enum için int.

int x = (int)Days.Sun;

Uyguladığınızda FlagsAttribute bitwise bir arada kullanılabilir öğeler içeren bir numaralandırma için OR işlemi, öznitelik davranışını etkileyen enum zaman, kullanılan bazı araçlar ile.Araçlarını kullandığınızda bu değişiklikleri fark Console class yöntemleri ve ifade değerlendirici.(Üçüncü örneğe bakın.)

Güçlü Programlama

Bir Enum değerlerini ayrı ayrı yapılan tüm başvurular, herhangi bir sabit olduğu gibi yalnızca ile derleme zamanında sayısal hazır bilgi için dönüştürülür.Bu olası sürüm oluşturma başlığı altında açıklandığı gibi sorunlara neden olabilir Sabitler (C# Programlama Kılavuzu).

Çeteleler yeni sürümleri için ek değerler atayarak veya yeni bir sürüm numaralandırma üyeleri değerlerini değiştirme bağımlı kaynak kodu için sorunlara neden olabilir.Numaralandırma değerleri sık sık kullanılan geçiş deyimleri.Ek öğeleri eklendi, enum türü, switch ifadesinin varsayılan bölüm beklenmedik şekilde seçilebilir.

Diğer geliştiriciler kod kullanıyorsanız, herhangi bir yeni öğe eklenirse, kendi kodunu nasıl güncelleştiren hakkında yönergeler sağlamanız gerekir enum türleri.

Örnek

Aşağıdaki örnekte, bir numaralandýrma Days, bildirildi.İki sıralayıcısını açıkça tamsayıya dönüştürülür ve tamsayı değişkenlere atanabilir.

public class EnumTest
{
    enum Days { Sun, Mon, Tue, Wed, Thu, Fri, Sat };

    static void Main()
    {
        int x = (int)Days.Sun;
        int y = (int)Days.Fri;
        Console.WriteLine("Sun = {0}", x);
        Console.WriteLine("Fri = {0}", y);
    }
}
/* Output:
   Sun = 0
   Fri = 5
*/

Aşağıdaki örnekte, taban türünü seçeneği bildirmek için kullanılan bir enum üyeleri türü olan long.Numaralandırma türlerinin olsa dikkat long, numaralandırma üyeleri hala açıkça yazın dönüştürülmelidir long bir cast kullanarak.

public class EnumTest2
{
    enum Range : long { Max = 2147483648L, Min = 255L };
    static void Main()
    {
        long x = (long)Range.Max;
        long y = (long)Range.Min;
        Console.WriteLine("Max = {0}", x);
        Console.WriteLine("Min = {0}", y);
    }
}
/* Output:
   Max = 2147483648
   Min = 255
*/

Aşağıdaki kod örneği kullanım ve etkisini göstermektedir FlagsAttribute üzerindeki öznitelik bir enum bildirimi.

// Add the attribute Flags or FlagsAttribute.
[Flags]
public enum CarOptions
{
    // The flag for SunRoof is 0001.
    SunRoof = 0x01,
    // The flag for Spoiler is 0010.
    Spoiler = 0x02,
    // The flag for FogLights is 0100.
    FogLights = 0x04,
    // The flag for TintedWindows is 1000.
    TintedWindows = 0x08,
}

class FlagTest
{
    static void Main()
    {
        // The bitwise OR of 0001 and 0100 is 0101.
        CarOptions options = CarOptions.SunRoof | CarOptions.FogLights;

        // Because the Flags attribute is specified, Console.WriteLine displays 
        // the name of each enum element that corresponds to a flag that has 
        // the value 1 in variable options.
        Console.WriteLine(options);
        // The integer value of 0101 is 5.
        Console.WriteLine((int)options);
    }
}
/* Output:
   SunRoof, FogLights
   5
*/

Comments

Siz kaldırırsanız, Flags, örnek aşağıdaki değerleri görüntüler:

5

5

C# dil belirtiminin

Daha fazla bilgi edinmek için, bkz. C# Dil Belirtimi. Dil belirtimi, C# sözdizimi ve kullanımı için kesin bir kaynaktır.

Ayrıca bkz.

Başvuru

C# Anahtar Sözcükleri

Tam Sayı Türleri Tablosu (C# Başvurusu)

Yerleşik Türler Tablosu (C# Başvurusu)

Örtük Sayısal Dönüşümler Tablosu (C# Başvurusu)

Açık Sayısal Dönüşümler Tablosu (C# Başvurusu)

Kavramlar

Numaralandırma Türleri (C# Programlama Kılavuzu)

Diğer Kaynaklar

C# Başvurusu