.NET ヘルプ

C# 列挙型 (開発者向けの仕組み)

公開済み 2024年3月26日
共有:

列挙型(Enum)は、開発者が名前付き定数のセットを確立するための強力な機能を提供します。 これらの定数は、値に対して意味のある名前を提供することにより、コードをより読みやすく、維持管理しやすくします。 この記事では、さまざまな例や説明を通じて、C#における列挙型(enum)の基本および高度な概念を探ります。 私たちの目標は、列挙型の包括的な理解と、列挙型を C# アプリケーションで効果的に使用する方法を提供することです。.NETでのPDF生成のためのIronPDFライブラリ.

C#における列挙型(Enum)の紹介

列挙型(enum)はC#の値型で、変数に一連の事前に定義された定数を持たせることができ、それぞれは列挙メンバーとして参照されます。 enum キーワードは列挙型を宣言するために使用され、定数値を単一の名前の下にグループ化する方法を提供します。 列挙型(Enums)は、コードの可読性を向上させ、不正確な値の渡しによるエラーを減少させます。

enum Season { Spring, Summer, Autumn, Winter }
enum Season { Spring, Summer, Autumn, Winter }
Friend Enum Season
	Spring
	Summer
	Autumn
	Winter
End Enum
VB   C#

上記のコードでは、Season は4つのメンバー(Spring、Summer、Autumn、Winter)を持つ列挙型です。 この列挙型を定義することにより、これら4つの値のいずれかのみを保持できるSeason型の変数を作成できます。

列挙型の基本型

列挙体メンバーの整数値を理解する

デフォルトでは、C#での列挙型(enum)の基礎となる型はintであり、これは基礎的な整数型として知られています。列挙型メンバーの整数値は0から始まり、明示的に指定されない限り、各メンバーの整数値は前のメンバーから1ずつ増加します。 列挙型の基礎となる型を他の任意の整数型に定義することもできます。

enum Season : byte { Spring = 1, Summer, Autumn = 4, Winter }
enum Season : byte { Spring = 1, Summer, Autumn = 4, Winter }
Friend Enum Season As Byte
	Spring = 1
	Summer
	Autumn = 4
	Winter
End Enum
VB   C#

この例では、Seasonは列挙型(enum)であり、ここでは列挙型の名前として参照されています。その基本型はバイトです。 Spring は明示的に値 1 を割り当てられ、デフォルト値となっています。一方、Summer、Autumn、そして Winter は、その順序に基づいて対応する値が割り当てられています。

コードでEnumを使用する

列挙型を使用するには、指定された列挙型の変数を宣言し、列挙型の中で定義された異なる値の1つにドット構文を使用してその値を割り当てるだけです。

Season currentSeason = Season.Autumn;
Season currentSeason = Season.Autumn;
Dim currentSeason As Season = Season.Autumn
VB   C#

この行は、Season型の変数currentSeasonを作成し、その値にAutumnを割り当てます。 これにより、currentSeasonは有効なSeasonの値のみを保持できることが明確になります。

列挙型値と整数の間の変換

列挙型の値を対応する整数値に変換することができますし、その逆も可能です。 これは、データを数値形式で保存または送信する必要がある場合に役立ちます。

int autumnInt = (int)Season.Autumn;
Season season = (Season)4;
int autumnInt = (int)Season.Autumn;
Season season = (Season)4;
Imports System

Dim autumnInt As Integer = CInt(Math.Truncate(Season.Autumn))
Dim season As Season = CType(4, Season)
VB   C#

ここで、autumnIntは値4を持ち、それはSeason列挙型のAutumnに対応します。 逆に、整数の4を Season に変換すると、seasonAutumn に設定されます。

列挙型メソッドの使用

C# には、Enum.GetName のような列挙型を操作するためのいくつかの方法が提供されています。(), Enum.GetNames()Enum.GetValue(), および Enum.GetValues()**, 各列挙型メンバーに関連するint定数にアクセスするために役立ちます。

string[] names = Enum.GetNames(typeof(Season));
foreach (string name in names)
{
    Console.WriteLine(name);
}
string[] names = Enum.GetNames(typeof(Season));
foreach (string name in names)
{
    Console.WriteLine(name);
}
Dim names() As String = System.Enum.GetNames(GetType(Season))
For Each name As String In names
	Console.WriteLine(name)
Next name
VB   C#

C# 列挙型(開発者向けの仕組み):図1 - Season 列挙型に関連する各値のコンソール出力

このコードスニペットは、Season 列挙型のすべてのメンバー名を出力します。 このようなメソッドは、列挙型のすべての値を反復処理したり、文字列表現と列挙型の値の間で変換するために非常に便利です。

列挙型メンバーに特定の値を割り当てる

列挙メンバーに特定の整数値を割り当てて、その数値を明示的に制御できます。

enum ErrorCode : int { None = 0, NotFound = 404, Unauthorized = 401 }
enum ErrorCode : int { None = 0, NotFound = 404, Unauthorized = 401 }
Friend Enum ErrorCode As Integer
	None = 0
	NotFound = 404
	Unauthorized = 401
End Enum
VB   C#

この例では、ErrorCode は各メンバーに割り当てられたカスタムの整数値を持つ列挙型です。 これは、HTTPステータスコードのような事前定義された数値コードに役立ちます。

ビットフラッグとしての列挙型の使用

を使用することにより[フラグ] 属性では、ビットフラグのセットとして列挙型を定義できます。 これにより、単一のenum変数に複数の値を格納することができます。

[Flags]
enum Permissions { None = 0, Read = 1, Write = 2, Execute = 4 }
[Flags]
enum Permissions { None = 0, Read = 1, Write = 2, Execute = 4 }
<Flags>
Friend Enum Permissions
	None = 0
	Read = 1
	Write = 2
	Execute = 4
End Enum
VB   C#

上記で定義された Permissions 列挙型を使用すると、ビット単位のOR演算子を使用して異なる許可を組み合わせることができます。

Permissions myPermissions = Permissions.Read 
 Permissions.Write;
Permissions myPermissions = Permissions.Read 
 Permissions.Write;
Dim myPermissions As Permissions = Permissions.Read Permissions.Write
VB   C#

これは、myPermissionsReadWrite の権限の組み合わせに設定します。

列挙型とスイッチ文

Enumsは、switchステートメントと非常に相性が良く、enumの値に基づいて異なるコードブロックを実行することができます。

Season season = Season.Summer;
switch (season)
{
    case Season.Spring:
        Console.WriteLine("It's spring.");
        break;
    case Season.Summer:
        Console.WriteLine("It's summer.");
        break;
    case Season.Autumn:
        Console.WriteLine("It's autumn.");
        break;
    case Season.Winter:
        Console.WriteLine("It's winter.");
        break;
}
Season season = Season.Summer;
switch (season)
{
    case Season.Spring:
        Console.WriteLine("It's spring.");
        break;
    case Season.Summer:
        Console.WriteLine("It's summer.");
        break;
    case Season.Autumn:
        Console.WriteLine("It's autumn.");
        break;
    case Season.Winter:
        Console.WriteLine("It's winter.");
        break;
}
Dim season As Season = Season.Summer
Select Case season
	Case Season.Spring
		Console.WriteLine("It's spring.")
	Case Season.Summer
		Console.WriteLine("It's summer.")
	Case Season.Autumn
		Console.WriteLine("It's autumn.")
	Case Season.Winter
		Console.WriteLine("It's winter.")
End Select
VB   C#

このコードは「It's summer.」と出力します。なぜならseason変数がSeason.Summerに設定されているからです。

文字列を列挙型に変換

C# では、Enum.Parse を使用して文字列を解析し、対応する列挙型の値を取得することができます。()** メソッド

string input = "Winter";
Season season = (Season)Enum.Parse(typeof(Season), input);
string input = "Winter";
Season season = (Season)Enum.Parse(typeof(Season), input);
Dim input As String = "Winter"
Dim season As Season = DirectCast(System.Enum.Parse(GetType(Season), input), Season)
VB   C#

このコードは、文字列 "Winter" を対応する列挙型値 Season.Winter に変換します。

Enumsを使用してIronPDFをC#に統合する

動的ドキュメント生成のためのIronPDF PDFライブラリは、.NETアプリケーション向けのPDFライブラリであり、開発者が簡単にPDFドキュメントを作成、編集、および操作するのに役立ちます。 この強力なライブラリは、動的なPDF生成が必要なシナリオ、例えばレポートや請求書の生成において特に有用です。 このセクションでは、C#の列挙型とIronPDFを統合する方法を探ります。.NETでHTMLからPDFレポートを作成するさらに、プロジェクトでのIronPDFのインストール手順についても説明します。

IronPDFのインストール

IronPDFのインストールは、NuGetパッケージマネージャーコンソールを使用することで非常に簡単です。 Visual Studio でパッケージ マネージャー コンソールを開き、次のコマンドを入力します:

Install-Package IronPdf

このコマンドを使って、プロジェクトにIronPDFをインストールします。

別の方法として、Visual Studioを利用してプロジェクトにIronPDFをインストールすることができます。 Visual Studioで、ソリューションエクスプローラーを右クリックし、「NuGet パッケージ マネージャー for Solutions」をクリックします。 その後、左側の参照タブをクリックします。そして、IronPDFを検索し、インストールをクリックし、プロジェクトに追加します。

C# 列挙型(開発者向けの仕組み):図 2 - NuGet パッケージ マネージャーを使用して IronPDF を検索して IronPDF をインストールする

Enumsを使用したIronPDF

季節ごとの売上データに関するレポートを含むPDFドキュメントを生成したいと考えてみましょう。 異なる季節を表すために列挙体を使用し、PDFレポートを生成するためにIronPDFを使用できます。 まず、四季のenumを定義します:

public enum Season
{
    Spring,
    Summer,
    Autumn,
    Winter
}
public enum Season
{
    Spring,
    Summer,
    Autumn,
    Winter
}
Public Enum Season
	Spring
	Summer
	Autumn
	Winter
End Enum
VB   C#

次に、選択したシーズンに基づいてPDFレポートを生成するメソッドを作成します。 このメソッドは、IronPDFを使用して、指定されたシーズンの販売データを概説するシンプルなPDF文書を作成します。

using IronPdf;
public class SalesReportGenerator
{
    public static void GenerateSeasonalSalesReport(Season season)
    {
        IronPdf.License.LicenseKey = "License-Key";
        var Renderer = new IronPdf.ChromePdfRenderer();
        var htmlTemplate = $"<h1>Sales Report for {season}</h1><p>This section contains sales data for the {season} season.</p>";
        var pdf = Renderer.RenderHtmlAsPdf(htmlTemplate);
        var outputPath = $@"{season}SalesReport.pdf";
        pdf.SaveAs(outputPath);
        Console.WriteLine($"PDF report generated: {outputPath}");
    }
}
using IronPdf;
public class SalesReportGenerator
{
    public static void GenerateSeasonalSalesReport(Season season)
    {
        IronPdf.License.LicenseKey = "License-Key";
        var Renderer = new IronPdf.ChromePdfRenderer();
        var htmlTemplate = $"<h1>Sales Report for {season}</h1><p>This section contains sales data for the {season} season.</p>";
        var pdf = Renderer.RenderHtmlAsPdf(htmlTemplate);
        var outputPath = $@"{season}SalesReport.pdf";
        pdf.SaveAs(outputPath);
        Console.WriteLine($"PDF report generated: {outputPath}");
    }
}
Imports IronPdf
Public Class SalesReportGenerator
	Public Shared Sub GenerateSeasonalSalesReport(ByVal season As Season)
		IronPdf.License.LicenseKey = "License-Key"
		Dim Renderer = New IronPdf.ChromePdfRenderer()
		Dim htmlTemplate = $"<h1>Sales Report for {season}</h1><p>This section contains sales data for the {season} season.</p>"
		Dim pdf = Renderer.RenderHtmlAsPdf(htmlTemplate)
		Dim outputPath = $"{season}SalesReport.pdf"
		pdf.SaveAs(outputPath)
		Console.WriteLine($"PDF report generated: {outputPath}")
	End Sub
End Class
VB   C#

以下の例では、Season 列挙型をパラメータとして取るメソッド GenerateSeasonalSalesReport を定義します。 これは、IronPDF の ChromePdfRenderer クラスを使用して、シーズン名と販売データのプレースホルダー テキストを含む HTML 文字列から PDF を生成します。 PDFはその後、季節の名前を含むファイル名で保存されます。

実行

季節の販売レポートを生成するには、特定の季節を指定して GenerateSeasonalSalesReport メソッドを呼び出してください。

static void Main(string [] args)
{
    SalesReportGenerator.GenerateSeasonalSalesReport(Season.Winter);
}
static void Main(string [] args)
{
    SalesReportGenerator.GenerateSeasonalSalesReport(Season.Winter);
}
Shared Sub Main(ByVal args() As String)
	SalesReportGenerator.GenerateSeasonalSalesReport(Season.Winter)
End Sub
VB   C#

この呼び出しにより、冬のシーズンの販売レポートを含むWinterSalesReport.pdfという名前のPDFドキュメントが生成されます。

C# 列挙型(開発者向けの動作方法): 図3 - コード例からIronPDFを使用したPDF出力例

結論

C#のEnumsは、関連する名前付き定数のセットを安全に扱うための型安全な方法を提供します。 コードの可読性を向上させ、エラーを減らし、よりクリーンなコードの組織化を促進します。 関連する定数値を意味のある名前の下でグループ化することにより、enumはコードの理解と保守を容易にします。

C#での列挙型(enums)とIronPDFの統合により、列挙型に基づくPDFドキュメントの動的生成が可能になります。IronPDFは包括的なPDFツールの無料トライアルまた、さまざまなプロジェクトのニーズや規模に対応できるよう、さまざまな選択肢を提供する必要があります。

< 以前
C# パラメータ (開発者向けの仕組み)
次へ >
Dotnet NuGet(開発者向けの動作方法)