Enum.GetValues Metódus
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
Túlterhelések
| Name | Description |
|---|---|
| GetValues(Type) |
Lekéri az állandók értékeinek tömbét egy megadott enumerálásban. |
| GetValues<TEnum>() |
Lekéri az állandók értékeinek tömbét egy megadott enumerálási típusban. |
GetValues(Type)
- Forrás:
- Enum.cs
- Forrás:
- Enum.cs
- Forrás:
- Enum.cs
- Forrás:
- Enum.cs
- Forrás:
- Enum.cs
Lekéri az állandók értékeinek tömbét egy megadott enumerálásban.
public:
static Array ^ GetValues(Type ^ enumType);
public static Array GetValues(Type enumType);
[System.Diagnostics.CodeAnalysis.RequiresDynamicCode("It might not be possible to create an array of the enum type at runtime. Use the GetValues<TEnum> overload or the GetValuesAsUnderlyingType method instead.")]
public static Array GetValues(Type enumType);
[System.Runtime.InteropServices.ComVisible(true)]
public static Array GetValues(Type enumType);
static member GetValues : Type -> Array
[<System.Diagnostics.CodeAnalysis.RequiresDynamicCode("It might not be possible to create an array of the enum type at runtime. Use the GetValues<TEnum> overload or the GetValuesAsUnderlyingType method instead.")>]
static member GetValues : Type -> Array
[<System.Runtime.InteropServices.ComVisible(true)>]
static member GetValues : Type -> Array
Public Shared Function GetValues (enumType As Type) As Array
Paraméterek
- enumType
- Type
Enumerálási típus.
Válaszok
Egy tömb, amely a benne lévő állandók értékeit enumTypetartalmazza.
- Attribútumok
Kivételek
enumType az null.
enumType nem egy Enum.
A metódust a rendszer csak tükröződésalapú kontextusban hívja meg,
-vagy-
enumType egy olyan szerelvény típusa, amely csak tükröződési kontextusba van betöltve.
.NET 8-es és újabb verziók: enumType logikai alapú enumerálási típus.
Példák
Az alábbi példa szemlélteti a GetValues használatát.
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
Megjegyzések
A tömb elemeit az enumerálási állandók bináris értékei rendezik (azaz az alá nem írt nagyságrendjük alapján). Az alábbi példa egy negatív, nulla és pozitív értéket tartalmazó enumerálás metódusa által GetValues visszaadott tömb adatait jeleníti meg.
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
A GetValues metódus egy tömböt ad vissza, amely az enumerálás egyes részeinek enumType értékét tartalmazza. Ha több tag azonos értékkel rendelkezik, a visszaadott tömb ismétlődő értékeket tartalmaz. Ebben az esetben a metódus meghívása a GetName visszaadott tömb minden értékével nem állítja vissza az ismétlődő értékekkel rendelkező tagokhoz rendelt egyedi neveket. Az enumerálási tagok nevének sikeres lekéréséhez hívja meg a metódust GetNames .
A GetValues metódus nem hívható meg csak tükröződés kontextusban történő tükröződéssel. Ehelyett az összes enumerálási tag értékét lekérheti a Type.GetFields metódussal az enumerálási tagoknak megfelelő objektumtömb FieldInfo lekéréséhez, majd meghívhatja a FieldInfo.GetRawConstantValue metódust a tömb egyes elemein. Az alábbi példa ezt a technikát szemlélteti. Ehhez a következő enumerálást kell definiálni egy Enumerations.dllnevű szerelvényben:
[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
A szerelvény csak tükröződésalapú környezetben van betöltve, a rendszer létrehoz egy Type , az Pets enumerálást jelképező objektumot, lekéri az objektumok tömbjét FieldInfo , és a mezőértékek megjelennek a konzolon.
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
A következőre érvényes:
GetValues<TEnum>()
- Forrás:
- Enum.cs
- Forrás:
- Enum.cs
- Forrás:
- Enum.cs
- Forrás:
- Enum.cs
- Forrás:
- Enum.cs
Lekéri az állandók értékeinek tömbét egy megadott enumerálási típusban.
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ípusparaméterek
- TEnum
Az enumerálás típusa.
Válaszok
Egy tömb, amely a benne lévő állandók értékeit TEnumtartalmazza.
Kivételek
.NET 8-es és újabb verziók: TEnum logikai alapú enumerálási típus.