Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Numaralandırma türü (veya numaralandırma türü), temel alınan tam sayı sayısal türünün adlandırılmış sabitleri kümesi tarafından tanımlanan bir değer türüdür. Bir numaralandırma türü tanımlamak için anahtar sözcüğünü enum
kullanın ve sabit listesi üyelerinin adlarını belirtin:
enum Season
{
Spring,
Summer,
Autumn,
Winter
}
Varsayılan olarak, enum üyelerinin ilişkili sabit değer türü int
'dır; bunlar sıfırla başlar ve tanım metni sırasına göre her bir adımda bir artar. Numaralandırma türünün temel alınan türü olarak diğer tüm integral sayısal türleri açıkça belirtebilirsiniz. Aşağıdaki örnekte gösterildiği gibi ilişkili sabit değerleri açıkça belirtebilirsiniz:
enum ErrorCode : ushort
{
None = 0,
Unknown = 1,
ConnectionLost = 100,
OutlierReading = 200
}
Bir numaralandırma türünün tanımı içinde bir yöntem tanımlayamazsınız. Numaralandırma türüne işlevsellik eklemek için bir uzantı yöntemi oluşturun.
Sabit listesi türünün E
varsayılan değeri, sıfırın karşılık gelen sabit listesi üyesi olmasa bile ifadesi (E)0
tarafından üretilen değerdir.
Numaralandırma türünü, birbirini dışlayan bir değer kümesinden veya seçim birleşiminden bir seçimi temsil etmek için kullanırsınız. Bir seçim bileşimini temsil etmek için bir numaralandırma türünü bit bayrakları olarak tanımlayın.
Numaralandırma türleri bit bayrakları olarak
Numaralandırma türünün seçeneklerin bir kombinasyonunu temsil etmesini istiyorsanız, her bir seçeneğin bir bit alanı olacak şekilde numaralandırma üyeleri tanımlayın. Başka bir ifadeyle, bu numaralandırma üyelerinin ilişkili değerleri ikinin kuvvetleri olmalıdır. Ardından bit düzeyinde mantıksal işleçleri |
kullanabilir veya &
sırasıyla seçimleri birleştirebilir veya seçim birleşimlerini kesiştirebilirsiniz. Numaralandırma türünün bit alanları bildirdiğini belirtmek için, buna Flags özniteliğini uygulayın. Aşağıdaki örnekte gösterildiği gibi, numaralandırma türünün tanımına bazı tipik birleşimler de ekleyebilirsiniz.
[Flags]
public enum Days
{
None = 0b_0000_0000, // 0
Monday = 0b_0000_0001, // 1
Tuesday = 0b_0000_0010, // 2
Wednesday = 0b_0000_0100, // 4
Thursday = 0b_0000_1000, // 8
Friday = 0b_0001_0000, // 16
Saturday = 0b_0010_0000, // 32
Sunday = 0b_0100_0000, // 64
Weekend = Saturday | Sunday
}
public class FlagsEnumExample
{
public static void Main()
{
Days meetingDays = Days.Monday | Days.Wednesday | Days.Friday;
Console.WriteLine(meetingDays);
// Output:
// Monday, Wednesday, Friday
Days workingFromHomeDays = Days.Thursday | Days.Friday;
Console.WriteLine($"Join a meeting by phone on {meetingDays & workingFromHomeDays}");
// Output:
// Join a meeting by phone on Friday
bool isMeetingOnTuesday = (meetingDays & Days.Tuesday) == Days.Tuesday;
Console.WriteLine($"Is there a meeting on Tuesday: {isMeetingOnTuesday}");
// Output:
// Is there a meeting on Tuesday: False
var a = (Days)37;
Console.WriteLine(a);
// Output:
// Monday, Wednesday, Saturday
}
}
Daha fazla bilgi ve örnek için API başvuru sayfasına, System.FlagsAttribute bölümüne bakınSystem.Enum.
System.Enum türü ve numaralandırma kısıtlaması
türü System.Enum , tüm numaralandırma türlerinin soyut temel sınıfıdır. Bir numaralandırma türü ve değerleri hakkında bilgi almak için bir dizi yöntem sağlar. Daha fazla bilgi ve örnek için API başvuru sayfasına bakın System.Enum .
Tür parametresinin bir numaralandırma türü olduğunu belirtmek için temel sınıf System.Enum
olarak bilinir) kullanabilirsiniz. Herhangi bir numaralandırma türü, tür parametresinin struct
null atanamaz bir değer türü olduğunu belirtmek için kullanılan kısıtlamayı da karşılar.
Dönüşümler
Herhangi bir numaralandırma türü için, numaralandırma türü ile temel alınan tam sayı türü arasında açık dönüştürmeler vardır. Bir enum değerini temel alınan türüne dönüştürürseniz, sonuç bir enum üyesinin ilişkili sayısal değeridir.
public enum Season
{
Spring,
Summer,
Autumn,
Winter
}
public class EnumConversionExample
{
public static void Main()
{
Season a = Season.Autumn;
Console.WriteLine($"Integral value of {a} is {(int)a}"); // output: Integral value of Autumn is 2
var b = (Season)1;
Console.WriteLine(b); // output: Summer
var c = (Season)4;
Console.WriteLine(c); // output: 4
}
}
Enum.IsDefined yöntemini, bir numaralandırma türünün belirli bir ilişkili değere sahip bir enum üyesi içerip içermediğini belirlemek için kullanın.
Herhangi bir numaralandırma türü için, sırasıyla kutulama ve kutudan çıkarma dönüştürmeleri System.Enum türüne ve türünden yapılabilir.
C# dil belirtimi
Daha fazla bilgi için C# dil belirtimininaşağıdaki bölümlerine bakın:
- Enumlar
- Enum değerleri ve işlemleri
- Numaralandırma mantıksal işleçleri
- Numaralandırma karşılaştırma işleçleri
- Açık numaralandırma dönüştürmeleri
- Örtük numaralandırma dönüştürmeleri