Enum.GetUnderlyingType(Type) 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
傳回指定列舉的基礎型別。
public:
static Type ^ GetUnderlyingType(Type ^ enumType);
public static Type GetUnderlyingType(Type enumType);
[System.Runtime.InteropServices.ComVisible(true)]
public static Type GetUnderlyingType(Type enumType);
static member GetUnderlyingType : Type -> Type
[<System.Runtime.InteropServices.ComVisible(true)>]
static member GetUnderlyingType : Type -> Type
Public Shared Function GetUnderlyingType (enumType As Type) As Type
參數
- enumType
- Type
將被檢索的底層型別列舉。
傳回
底層類型 enumType。
- 屬性
例外狀況
enumType 是 null。
enumType 不是 Enum。
範例
以下範例呼叫該 GetUnderlyingType 方法來顯示某些列舉成員的底層型別。
using System;
public class Example
{
public static void Main()
{
Enum[] enumValues = { ConsoleColor.Red, DayOfWeek.Monday,
MidpointRounding.ToEven, PlatformID.Win32NT,
DateTimeKind.Utc, StringComparison.Ordinal };
Console.WriteLine("{0,-10} {1, 18} {2,15}\n",
"Member", "Enumeration", "Underlying Type");
foreach (var enumValue in enumValues)
DisplayEnumInfo(enumValue);
}
static void DisplayEnumInfo(Enum enumValue)
{
Type enumType = enumValue.GetType();
Type underlyingType = Enum.GetUnderlyingType(enumType);
Console.WriteLine("{0,-10} {1, 18} {2,15}",
enumValue, enumType.Name, underlyingType.Name);
}
}
// The example displays the following output:
// Member Enumeration Underlying Type
//
// Red ConsoleColor Int32
// Monday DayOfWeek Int32
// ToEven MidpointRounding Int32
// Win32NT PlatformID Int32
// Utc DateTimeKind Int32
// Ordinal StringComparison Int32
open System
let displayEnumInfo (enumValue: Enum) =
let enumType = enumValue.GetType()
let underlyingType = Enum.GetUnderlyingType enumType
printfn $"{enumValue,-10} {enumType.Name, 18} {underlyingType.Name,15}"
let enumValues: Enum list =
[ ConsoleColor.Red; DayOfWeek.Monday
MidpointRounding.ToEven; PlatformID.Win32NT
DateTimeKind.Utc; StringComparison.Ordinal ]
printfn "%-10s %18s %15s\n" "Member" "Enumeration" "Underlying Type"
for enumValue in enumValues do
displayEnumInfo enumValue
// The example displays the following output:
// Member Enumeration Underlying Type
//
// Red ConsoleColor Int32
// Monday DayOfWeek Int32
// ToEven MidpointRounding Int32
// Win32NT PlatformID Int32
// Utc DateTimeKind Int32
// Ordinal StringComparison Int32
Module Example
Public Sub Main()
Dim enumValues() As [Enum] = { ConsoleColor.Red, DayOfWeek.Monday,
MidpointRounding.ToEven, PlatformID.Win32NT,
DateTimeKind.Utc, StringComparison.Ordinal }
Console.WriteLine("{0,-10} {1, 18} {2,15}",
"Member", "Enumeration", "Underlying Type")
Console.WriteLine()
For Each enumValue In enumValues
DisplayEnumInfo(enumValue)
Next
End Sub
Sub DisplayEnumInfo(enumValue As [Enum])
Dim enumType As Type = enumValue.GetType()
Dim underlyingType As Type = [Enum].GetUnderlyingType(enumType)
Console.WriteLine("{0,-10} {1, 18} {2,15}",
enumValue, enumType.Name, underlyingType.Name)
End Sub
End Module
' The example displays the following output:
' Member Enumeration Underlying Type
'
' Red ConsoleColor Int32
' Monday DayOfWeek Int32
' ToEven MidpointRounding Int32
' Win32NT PlatformID Int32
' Utc DateTimeKind Int32
' Ordinal StringComparison Int32
備註
此 Enum 結構使值能以命名常數表示。 列舉值的資料型態稱為其底層型別。 例如,列舉的底層類型 DayOfWeek ,由代表每一天的常數組成(DayOfWeek.Monday、、 DayOfWeek.Tuesday,依此類推),為 Int32。