フッターコンテンツにスキップ
.NETヘルプ

C# Enums(開発者向けの動作方法)

ボディコンテンツ: 列挙型(enums)は列挙(enumerations)の短縮形であり、開発者が一連の名前付き定数を設定するための強力な機能を提供します。 これらの定数は、値に意味のある名前を提供することで、コードの可読性と保守性を向上させます。 この記事では、C#の列挙型の基本と高度な概念を、さまざまな例と説明を通じて探ります。 私たちの目標は、.NETのPDF生成用のIronPDFライブラリを使用して、C#アプリケーションで列挙型を効果的に使用する方法について、包括的な理解を提供することです。

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

列挙型(enum)は、C#における値タイプで、変数が事前定義された一連の定数(各々が列挙メンバーと呼ばれる)のセットになることができます。 enumキーワードは列挙型の宣言に用いられ、単一の名前の下に定数値をグループ化する方法を提供します。 列挙型はコードの可読性を向上させ、不正な値が渡されることによるエラーを減少させます。

// Define an enum with four members
enum Season { Spring, Summer, Autumn, Winter }
// Define an enum with four members
enum Season { Spring, Summer, Autumn, Winter }
' Define an enum with four members
Friend Enum Season
	Spring
	Summer
	Autumn
	Winter
End Enum
$vbLabelText   $csharpLabel

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

列挙型の基底型

列挙型メンバーの整数値の理解

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

// Define an enum with a byte underlying type and specific values
enum Season : byte { Spring = 1, Summer, Autumn = 4, Winter }
// Define an enum with a byte underlying type and specific values
enum Season : byte { Spring = 1, Summer, Autumn = 4, Winter }
' Define an enum with a byte underlying type and specific values
Friend Enum Season As Byte
	Spring = 1
	Summer
	Autumn = 4
	Winter
End Enum
$vbLabelText   $csharpLabel

この例では、Season列挙型の基底型はbyteです。 Springは1に明確に指定されており、デフォルト値となり、Summer, Autumn, Winterはその順序に基づいて対応する値が割り当てられています。

コードでの列挙型の使用

列挙型は、指定された列挙型の変数を宣言し、列挙宣言内で定義されたさまざまな値のいずれかをドット記法を使用して割り当てるだけで使用できます。

// Declare a Season variable and assign it an enum member value
Season currentSeason = Season.Autumn;
// Declare a Season variable and assign it an enum member value
Season currentSeason = Season.Autumn;
' Declare a Season variable and assign it an enum member value
Dim currentSeason As Season = Season.Autumn
$vbLabelText   $csharpLabel

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

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

列挙型の値をキャストして対応する整数値に変換したり、その逆を行ったりできます。 これは、データを数値形式で保存または送信する必要がある場合に便利です。

// Convert Season.Autumn to its integer value and vice versa
int autumnInt = (int)Season.Autumn;     // autumnInt will be 4
Season season = (Season)4;              // season will be Season.Autumn
// Convert Season.Autumn to its integer value and vice versa
int autumnInt = (int)Season.Autumn;     // autumnInt will be 4
Season season = (Season)4;              // season will be Season.Autumn
Imports System

' Convert Season.Autumn to its integer value and vice versa
Dim autumnInt As Integer = CInt(Math.Truncate(Season.Autumn)) ' autumnInt will be 4
Dim season As Season = CType(4, Season) ' season will be Season.Autumn
$vbLabelText   $csharpLabel

ここで、autumnIntにはSeason列挙型のAutumnに対応する値である4が与えられます。 逆に、seasonSeasonに整数4をキャストすることでAutumnに設定されます。

列挙型メソッドの活用

C#は、Enum.GetName(), Enum.GetNames(), Enum.GetValue(), Enum.GetValues()などの列挙型を操作するためのいくつかのメソッドを提供します。これらは、それぞれの列挙メンバーに関連付けられたint定数にアクセスするのに便利です。

// Get names of all enum members and print them
string[] names = Enum.GetNames(typeof(Season));
foreach (string name in names)
{
    Console.WriteLine(name);
}
// Get names of all enum members and print them
string[] names = Enum.GetNames(typeof(Season));
foreach (string name in names)
{
    Console.WriteLine(name);
}
' Get names of all enum members and print them
Dim names() As String = System.Enum.GetNames(GetType(Season))
For Each name As String In names
	Console.WriteLine(name)
Next name
$vbLabelText   $csharpLabel

C# Enums (How It Works For Developers): 図1 - Season列挙型に関連する各値のコンソール出力

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

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

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

// Define an enum with custom integer values for members
enum ErrorCode : int { None = 0, NotFound = 404, Unauthorized = 401 }
// Define an enum with custom integer values for members
enum ErrorCode : int { None = 0, NotFound = 404, Unauthorized = 401 }
' Define an enum with custom integer values for members
Friend Enum ErrorCode As Integer
	None = 0
	NotFound = 404
	Unauthorized = 401
End Enum
$vbLabelText   $csharpLabel

この例では、ErrorCodeは各メンバーにカスタム整数値が割り当てられた列挙型です。 これは、HTTPステータスコードのような事前定義済みの数値コードに有用です。

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

[Flags]属性を使用することで、列挙型をビットフラグのセットとして定義することができます。 これにより、単一の列挙型変数に値の組み合わせを格納することが可能になります。

[Flags]
// Define an enum for permissions using bit flags
enum Permissions { None = 0, Read = 1, Write = 2, Execute = 4 }
[Flags]
// Define an enum for permissions using bit flags
enum Permissions { None = 0, Read = 1, Write = 2, Execute = 4 }
' Define an enum for permissions using bit flags
<Flags>
Friend Enum Permissions
	None = 0
	Read = 1
	Write = 2
	Execute = 4
End Enum
$vbLabelText   $csharpLabel

上述のPermissions列挙型を使用すると、ビットごとのOR演算子を使用して異なるパーミッションを結合できます。

// Combine permissions using bitwise OR
Permissions myPermissions = Permissions.Read | Permissions.Write;
// Combine permissions using bitwise OR
Permissions myPermissions = Permissions.Read | Permissions.Write;
' Combine permissions using bitwise OR
Dim myPermissions As Permissions = Permissions.Read Or Permissions.Write
$vbLabelText   $csharpLabel

これにより、myPermissionsReadおよびWriteパーミッションの組み合わせを設定します。

列挙型とswitchステートメント

列挙型はswitchステートメントと非常にうまく機能し、列挙型の値に基づいて異なるコードブロックを実行することができます。

// Use a switch statement with an 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;
}
// Use a switch statement with an 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;
}
' Use a switch statement with an enum
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
$vbLabelText   $csharpLabel

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

文字列から列挙型への変換

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

// Parse a string into an enum value
string input = "Winter";
Season season = (Season)Enum.Parse(typeof(Season), input);
// Parse a string into an enum value
string input = "Winter";
Season season = (Season)Enum.Parse(typeof(Season), input);
' Parse a string into an enum value
Dim input As String = "Winter"
Dim season As Season = DirectCast(System.Enum.Parse(GetType(Season), input), Season)
$vbLabelText   $csharpLabel

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

C#での列挙型とIronPDF の統合

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

IronPDFを使用すれば、任意のHTML、URL、またはWebページを元のままの外観でPDFに変換できます。 請求書、レポート、その他のWebベースのコンテンツ用のPDFを生成するのに最適なオプションです。 HTMLをPDFに変換する準備はできていますか? IronPDFなら簡単です。

using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
Imports IronPdf

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim renderer = New ChromePdfRenderer()

		' 1. Convert HTML String to PDF
		Dim htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>"
		Dim pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent)
		pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf")

		' 2. Convert HTML File to PDF
		Dim htmlFilePath = "path_to_your_html_file.html" ' Specify the path to your HTML file
		Dim pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath)
		pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf")

		' 3. Convert URL to PDF
		Dim url = "http://ironpdf.com" ' Specify the URL
		Dim pdfFromUrl = renderer.RenderUrlAsPdf(url)
		pdfFromUrl.SaveAs("URLToPDF.pdf")
	End Sub
End Class
$vbLabelText   $csharpLabel

IronPDFのインストール

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

Install-Package IronPdf

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

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

C# Enums (How It Works For Developers): 図2 - NuGet パッケージマネージャーでIronPDFを検索してインストール

IronPDFと列挙型の使用

季節ごとの販売データを含むPDFドキュメントを生成したいというシナリオを考えてみましょう。 さまざまな季節を表すために列挙型を使用し、IronPDFでPDFレポートを生成できます。 まず、季節用の列挙型を定義します。

public enum Season
{
    Spring,
    Summer,
    Autumn,
    Winter
}
public enum Season
{
    Spring,
    Summer,
    Autumn,
    Winter
}
Public Enum Season
	Spring
	Summer
	Autumn
	Winter
End Enum
$vbLabelText   $csharpLabel

次に、選択された季節に基づいて PDF レポートを生成するメソッドを書きます。 このメソッドは、指定された季節の販売データを概説する簡単なPDFドキュメントを作成するためにIronPDFを利用します。

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
$vbLabelText   $csharpLabel

この例では、Season列挙型をパラメーターとして受け取るメソッドGenerateSeasonalSalesReportを定義します。 それは季節の名前と販売データのプレースホルダーテキストを含むHTML文字列からPDFを生成するためにIronPDFのChromePdfRendererクラスを使用します。 その後、その季節の名前を含むファイル名で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
$vbLabelText   $csharpLabel

この呼び出しは、冬季の販売レポートが含まれたWinterSalesReport.pdfという名前のPDFドキュメントを生成します。

C# Enums (How It Works For Developers): 図3 - コード例からIronPDFを使用した例のPDF出力

結論

C#の列挙型は、一連の関連する名前付き定数を使用するための型安全な方法を提供します。 それは、コードの可読性を向上させ、エラーを減少させ、より整然としたコードの組織化を促進します。 関連する定数値を意味のある名前でグループ化することで、列挙型はコードを理解しやすくし、保守しやすくします。

C#においてIronPDFと列挙型を統合することで、列挙型にもとづいた動的なPDFドキュメントの生成を可能にします。IronPDFは包括的なPDFツールの無料トライアルを提供しており、さまざまなプロジェクトのニーズや規模に合わせたオプションを提供しています。

よくある質問

C#の列挙型とは何で、なぜそれらが便利なのですか?

列挙型(enums)は、C#の機能で、開発者が名前付き定数のセットを定義できるようにします。これにより、コードの可読性と保守性が向上します。定数値を単一の名前の下にグループ化するためです。

C#で列挙型を宣言して初期化する方法は?

C#では、enumキーワードの後に列挙型名とメンバーを続けて列挙型を宣言します。例えば、enum Season { Spring, Summer, Autumn, Winter }は、4つのメンバーを持つSeasonという列挙型を作成します。

C#で列挙型メンバーにカスタムの基礎値を持たせることはできますか?

はい、C#では、列挙型メンバーに特定の整数値を割り当てて、数値表現を制御できます。例えば、enum ErrorCode { None = 0, NotFound = 404, Unauthorized = 401 }は、それぞれのメンバーにカスタム値を割り当てます。

C#で列挙型の値を整数に変換し、逆に変換する方法は?

列挙型の値を整数に変換するには、キャスティングを使用します。例:(int)Season.Autumn。整数を列挙型に変換するには、整数を列挙型タイプにキャストします。例:(Season)4

C#列挙型における[Flags]属性の目的は何ですか?

C#の[Flags]属性を使用すると、一つの変数内で値を組み合わせるために、列挙型をビットフラグのセットとして使用できます。これは、例えば「読み取り」と「書き込み」の権限を組み合わせて表現する必要があるシナリオで役立ちます。

C#での動的PDFドキュメント生成に列挙型をどのように利用できますか?

動的PDFドキュメント生成で、列挙型は異なるカテゴリやタイプを表現するために使用されます。例えば、「Season」列挙型を使用して、適切な列挙型値を選択することで季節販売レポート用のPDFを動的に作成できます。

C#プロジェクトでPDF生成ライブラリをインストールするプロセスは?

C#プロジェクトにPDF生成ライブラリをインストールするには、NuGetパッケージマネージャーコンソールでInstall-Package [LibraryName]ようなコマンドを使用するか、Visual StudioのNuGetパッケージマネージャーインターフェイスを使ってインストールします。

C#のスイッチ文で列挙型を導入する方法は?

列挙型はスイッチ文で使用され、列挙型の値に基づいて異なるコードブロックを実行できます。例えば、「Season」列挙型変数に対するスイッチ文で、各季節に特定のロジックを実行し、コードの明確さと整理を向上させます。

C#で文字列を列挙型に解析する方法は?

C#で文字列を列挙型値に解析するには、Enum.Parse()メソッドを使用します。例:Enum.Parse(typeof(Season), "Winter")は文字列 'Winter' を対応する列挙型値 'Season.Winter' に変換します。

C#で列挙型名を扱うために利用可能なメソッドは何ですか?

C#はEnum.GetName()Enum.GetNames()など、列挙型名を扱うメソッドを提供しています。Enum.GetName()は指定された値を持つ定数の名前を返し、Enum.GetNames()は列挙型内のすべての定数の名前の配列を返します。

Curtis Chau
テクニカルライター

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。