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です。