Enum.GetValues Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Aşırı Yüklemeler
GetValues(Type) |
Belirtilen bir sabit listesi içindeki sabitlerin değerlerinin dizisini alır. |
GetValues<TEnum>() |
Belirtilen sabit listesi türündeki sabitlerin değerlerinin dizisini alır. |
GetValues(Type)
- Kaynak:
- Enum.cs
- Kaynak:
- Enum.cs
- Kaynak:
- Enum.cs
Belirtilen bir sabit listesi içindeki sabitlerin değerlerinin dizisini alır.
public:
static Array ^ GetValues(Type ^ enumType);
public static Array GetValues (Type enumType);
[System.Runtime.InteropServices.ComVisible(true)]
public static Array GetValues (Type enumType);
static member GetValues : Type -> Array
[<System.Runtime.InteropServices.ComVisible(true)>]
static member GetValues : Type -> Array
Public Shared Function GetValues (enumType As Type) As Array
Parametreler
- enumType
- Type
Bir numaralandırma türü.
Döndürülenler
içindeki enumType
sabitlerin değerlerini içeren bir dizi.
- Öznitelikler
Özel durumlar
enumType
, null
değeridir.
enumType
bir Enumdeğildir.
yöntemi yalnızca yansıma bağlamında yansıma tarafından çağrılır,
-veya-
enumType
, yalnızca yansıma bağlamında yüklenen bir derlemeden türdür.
.NET 8 ve sonraki sürümleri: enumType
Boole destekli bir numaralandırma türüdür.
Örnekler
Aşağıdaki örnekte kullanımı gösterilmektedir GetValues.
using namespace System;
enum class Colors
{
Red, Green, Blue, Yellow
};
enum class Styles
{
Plaid = 0,
Striped = 23,
Tartan = 65,
Corduroy = 78
};
int main()
{
Console::WriteLine( "The values of the Colors Enum are:" );
Array^ a = Enum::GetValues( Colors::typeid );
for ( Int32 i = 0; i < a->Length; i++ )
{
Object^ o = a->GetValue( i );
Console::WriteLine( "{0}", Enum::Format( Colors::typeid, o, "D" ) );
}
Console::WriteLine();
Console::WriteLine( "The values of the Styles Enum are:" );
Array^ b = Enum::GetValues( Styles::typeid );
for ( Int32 i = 0; i < b->Length; i++ )
{
Object^ o = b->GetValue( i );
Console::WriteLine( "{0}", Enum::Format( Styles::typeid, o, "D" ) );
}
}
// The example produces the following output:
// The values of the Colors Enum are:
// 0
// 1
// 2
// 3
//
// The values of the Styles Enum are:
// 0
// 23
// 65
// 78
using System;
public class GetValuesTest {
enum Colors { Red, Green, Blue, Yellow };
enum Styles { Plaid = 0, Striped = 23, Tartan = 65, Corduroy = 78 };
public static void Main() {
Console.WriteLine("The values of the Colors Enum are:");
foreach(int i in Enum.GetValues(typeof(Colors)))
Console.WriteLine(i);
Console.WriteLine();
Console.WriteLine("The values of the Styles Enum are:");
foreach(int i in Enum.GetValues(typeof(Styles)))
Console.WriteLine(i);
}
}
// The example produces the following output:
// The values of the Colors Enum are:
// 0
// 1
// 2
// 3
//
// The values of the Styles Enum are:
// 0
// 23
// 65
// 78
open System
type Colors =
| Red = 0
| Green = 1
| Blue = 2
| Yellow = 3
type Styles =
| Plaid = 0
| Striped = 23
| Tartan = 65
| Corduroy = 78
printfn $"The values of the Colors Enum are:"
for i in Enum.GetValues typeof<Colors> do
printfn $"{i}"
printfn "\nThe values of the Styles Enum are:"
for i in Enum.GetValues typeof<Styles> do
printfn $"{i}"
// The example produces the following output:
// The values of the Colors Enum are:
// 0
// 1
// 2
// 3
//
// The values of the Styles Enum are:
// 0
// 23
// 65
// 78
Public Class GetValuesTest
Enum Colors
Red
Green
Blue
Yellow
End Enum 'Colors
Enum Styles
Plaid = 0
Striped = 23
Tartan = 65
Corduroy = 78
End Enum 'Styles
Public Shared Sub Main()
Console.WriteLine("The values of the Colors Enum are:")
Dim i As Integer
For Each i In [Enum].GetValues(GetType(Colors))
Console.WriteLine(i)
Next
Console.WriteLine()
Console.WriteLine("The values of the Styles Enum are:")
For Each i In [Enum].GetValues(GetType(Styles))
Console.WriteLine(i)
Next
End Sub
End Class
' The example produces the following output:
' The values of the Colors Enum are:
' 0
' 1
' 2
' 3
'
' The values of the Styles Enum are:
' 0
' 23
' 65
' 78
Açıklamalar
Dizinin öğeleri, numaralandırma sabitlerinin ikili değerlerine (yani işaretsiz büyüklüklerine göre) göre sıralanır. Aşağıdaki örnekte negatif değer, sıfır ve pozitif bir değer içeren bir sabit listesi için yöntemi tarafından GetValues döndürülen dizi hakkındaki bilgiler görüntülenir.
using System;
enum SignMagnitude { Negative = -1, Zero = 0, Positive = 1 };
public class Example
{
public static void Main()
{
foreach (var value in Enum.GetValues(typeof(SignMagnitude))) {
Console.WriteLine("{0,3} 0x{0:X8} {1}",
(int) value, ((SignMagnitude) value));
} }
}
// The example displays the following output:
// 0 0x00000000 Zero
// 1 0x00000001 Positive
// -1 0xFFFFFFFF Negative
open System
type SignMagnitude =
| Negative = -1
| Zero = 0
| Positive = 1
for value in Enum.GetValues typeof<SignMagnitude> do
printfn $"{value :?> int,3} 0x{value :?> int:X8} {value :?> SignMagnitude}"
// The example displays the following output:
// 0 0x00000000 Zero
// 1 0x00000001 Positive
// -1 0xFFFFFFFF Negative
Public Enum SignMagnitude As Integer
Negative = -1
Zero = 0
Positive = 1
End Enum
Module Example
Public Sub Main()
Dim values() As Integer = CType([Enum].GetValues(GetType(SignMagnitude)), Integer())
For Each value In values
Console.WriteLine("{0,3} 0x{0:X8} {1}",
value, CType(value, SignMagnitude).ToString())
Next
End Sub
End Module
' The example displays the following output:
' 0 0x00000000 Zero
' 1 0x00000001 Positive
' -1 0xFFFFFFFF Negative
yöntemi, GetValues numaralandırmanın her üyesi enumType
için bir değer içeren bir dizi döndürür. Birden çok üye aynı değere sahipse, döndürülen dizi yinelenen değerler içerir. Bu durumda, döndürülen dizideki her değerle yöntemini çağırmak GetName , yinelenen değerlere sahip üyelere atanan benzersiz adları geri yüklemez. Numaralandırma üyelerinin tüm adlarını başarıyla almak için yöntemini çağırın GetNames .
GetValues yöntemi yalnızca yansıma bağlamında yansıma kullanılarak çağrılamaz. Bunun yerine, numaralandırma üyelerini temsil eden bir nesne dizisi FieldInfo almak ve ardından dizinin her öğesinde yöntemini çağırmak FieldInfo.GetRawConstantValue için yöntemini kullanarak Type.GetFields tüm numaralandırma üyelerinin değerini alabilirsiniz. Aşağıdaki örnekte bu teknik gösterilmektedir. Enumerations.dll adlı bir derlemede aşağıdaki numaralandırmayı tanımlamanız gerekir:
[Flags] enum Pets { None=0, Dog=1, Cat=2, Rodent=4, Bird=8,
Fish=16, Reptile=32, Other=64 };
[<Flags>]
type Pets =
| None = 0
| Dog = 1
| Cat = 2
| Rodent = 4
| Bird = 8
| Fish = 16
| Reptile = 32
| Other = 64
<Flags> Public Enum Pets As Integer
None = 0
Dog = 1
Cat = 2
Rodent = 4
Bird = 8
Fish = 16
Reptile = 32
Other = 64
End Enum
Derleme yalnızca yansıma bağlamında yüklenir, numaralandırmayı Pets
temsil eden bir Type nesne örneği oluşturulur, bir nesne dizisi FieldInfo alınır ve alan değerleri konsolda görüntülenir.
using System;
using System.Reflection;
public class Example
{
public static void Main()
{
Assembly assem = Assembly.ReflectionOnlyLoadFrom(@".\Enumerations.dll");
Type typ = assem.GetType("Pets");
FieldInfo[] fields = typ.GetFields();
foreach (var field in fields) {
if (field.Name.Equals("value__")) continue;
Console.WriteLine("{0,-9} {1}", field.Name + ":",
field.GetRawConstantValue());
}
}
}
// The example displays the following output:
// None: 0
// Dog: 1
// Cat: 2
// Rodent: 4
// Bird: 8
// Fish: 16
// Reptile: 32
// Other: 64
open System
open System.Reflection
let assem = Assembly.ReflectionOnlyLoadFrom @".\Enumerations.dll"
let typ = assem.GetType "Pets"
let fields = typ.GetFields()
for field in fields do
if not (field.Name.Equals "value__") then
printfn $"""{field.Name + ":",-9} {field.GetRawConstantValue()}"""
// The example displays the following output:
// None: 0
// Dog: 1
// Cat: 2
// Rodent: 4
// Bird: 8
// Fish: 16
// Reptile: 32
// Other: 64
Imports System.Reflection
Module Example
Public Sub Main()
Dim assem As Assembly = Assembly.ReflectionOnlyLoadFrom(".\Enumerations.dll")
Dim typ As Type = assem.GetType("Pets")
Dim fields As FieldInfo() = typ.GetFields
For Each field In fields
If field.Name.Equals("value__") Then Continue For
Console.WriteLine("{0,-9} {1}", field.Name + ":",
field.GetRawConstantValue())
Next
End Sub
End Module
' The example displays the following output:
' None: 0
' Dog: 1
' Cat: 2
' Rodent: 4
' Bird: 8
' Fish: 16
' Reptile: 32
' Other: 64
Şunlara uygulanır
GetValues<TEnum>()
- Kaynak:
- Enum.cs
- Kaynak:
- Enum.cs
- Kaynak:
- Enum.cs
Belirtilen sabit listesi türündeki sabitlerin değerlerinin dizisini alır.
public:
generic <typename TEnum>
where TEnum : value class static cli::array <TEnum> ^ GetValues();
public static TEnum[] GetValues<TEnum> () where TEnum : struct;
static member GetValues : unit -> 'Enum[] (requires 'Enum : struct)
Public Shared Function GetValues(Of TEnum As Structure) () As TEnum()
Tür Parametreleri
- TEnum
Numaralandırmanın türü.
Döndürülenler
içindeki TEnum
sabitlerin değerlerini içeren bir dizi.
Özel durumlar
.NET 8 ve sonraki sürümleri: TEnum
Boole destekli bir numaralandırma türüdür.