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

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

C#では、const キーワードは、コンパイル時に既知の定数フィールドや値を定義するための強力なツールです。これらの値は不変であり、一度設定されると、プログラム全体でその値を変更することはできません。 const を利用することで、定数であることが明示され、コードをより読みやすく、保守しやすくすることができます。 この記事では、const キーワードと IronPDFライブラリ について説明します。

定数変数の宣言

定数変数を宣言するには、データ型の後にconst キーワードを使用し、その直後に初期化します。 例えば、const int myConstValue = 100; これは整数定数を定義します。 定数変数は宣言時に初期化する必要があり、その値はコンパイル時に決定され、プログラムが実行される前に完全に評価されることが重要です。

public class Program
{
    public const int MaxSize = 10;

    static void Main(string[] args)
    {
        Console.WriteLine(MaxSize);
    }
}
public class Program
{
    public const int MaxSize = 10;

    static void Main(string[] args)
    {
        Console.WriteLine(MaxSize);
    }
}
Public Class Program
	Public Const MaxSize As Integer = 10

	Shared Sub Main(ByVal args() As String)
		Console.WriteLine(MaxSize)
	End Sub
End Class
$vbLabelText   $csharpLabel

C# Const (How It Works For Developers): 図1 - Const出力

この例は、クラス内での整数定数(const int)のシンプルな使用法を示しています。 MaxSize 定数は同じクラス内でアクセス可能であり、static void Main メソッドで直接使用できます。

const と readonly変数

両方の constreadonly キーワードは不変の値を宣言するために使用されますが、それらの間には重要な違いがあります。 const フィールドはコンパイル時定数であり、その値はコンパイル時に決定され、直接ILコードに埋め込まれます。 これにより、staticとなり、変更できません。

一方で、readonly 変数は宣言時またはクラスのコンストラクタ内で割り当てられることができます。 これにより、クラスのインスタンス化に使用されるコンストラクタに応じて異なる値を持てるため、ある程度の柔軟性が得られます。

public class Program
{
    public const string ConstExample = "Constant"; // const string
    public readonly string ReadonlyExample;

    public Program()
    {
        ReadonlyExample = "Initialized at runtime";
    }

    static void Main(string[] args)
    {
        Program p = new Program();
        Console.WriteLine(ConstExample);
        Console.WriteLine(p.ReadonlyExample);
    }
}
public class Program
{
    public const string ConstExample = "Constant"; // const string
    public readonly string ReadonlyExample;

    public Program()
    {
        ReadonlyExample = "Initialized at runtime";
    }

    static void Main(string[] args)
    {
        Program p = new Program();
        Console.WriteLine(ConstExample);
        Console.WriteLine(p.ReadonlyExample);
    }
}
Public Class Program
	Public Const ConstExample As String = "Constant" ' const string
	Public ReadOnly ReadonlyExample As String

	Public Sub New()
		ReadonlyExample = "Initialized at runtime"
	End Sub

	Shared Sub Main(ByVal args() As String)
		Dim p As New Program()
		Console.WriteLine(ConstExample)
		Console.WriteLine(p.ReadonlyExample)
	End Sub
End Class
$vbLabelText   $csharpLabel

C# Const (How It Works For Developers): 図2 - Readonly フィールド出力

const 変数のスコープ

定数変数はメソッド内またはクラスのメンバーとして宣言できます。 メソッド内で const 変数を宣言すると、それはローカル定数として知られます。 ローカル定数は宣言されたメソッド内でのみアクセス可能です。

public class Program
{
    static void DemoMethod()
    {
        const int LocalConst = 5; // local constant
        Console.WriteLine(LocalConst);
    }
}
public class Program
{
    static void DemoMethod()
    {
        const int LocalConst = 5; // local constant
        Console.WriteLine(LocalConst);
    }
}
Public Class Program
	Private Shared Sub DemoMethod()
		Const LocalConst As Integer = 5 ' local constant
		Console.WriteLine(LocalConst)
	End Sub
End Class
$vbLabelText   $csharpLabel

C# Const (How It Works For Developers): 図3 - ローカル定数出力

これに対し、クラス内で宣言されメソッドの外部で const が宣言されると、それは同じクラス内の任意の静的関数からアクセス可能です。なぜなら、const フィールドは暗黙的に静的なためです。 しかし、クラス名を通じて参照せずにインスタンスメソッドから const フィールドにアクセスしようとすると、コンパイルエラーが発生します。

コンパイル時定数とランタイム定数

const 値の主な特徴は、コンパイル時に評価されることです。つまり、const フィールドの値はコンパイル時に既知であり、コンパイラによって完全に評価される必要があります。 これは、プログラムの実行中に決定される変数とは対照的です。

例えば、ランタイムで実行される計算に基づいて const フィールドに値を割り当てようとすると、コンパイル時エラーが発生します。 コンパイラは、const 値が定数表現またはコンパイル時に既知のリテラル値から割り当てられることを要求します。

const double Pi = Math.PI; // This will cause a compile time error
const double Pi = Math.PI; // This will cause a compile time error
Const Pi As Double = Math.PI ' This will cause a compile time error
$vbLabelText   $csharpLabel

C# における定数と静的メンバーの高度な使用法

C#の基本以上に、定数式、静的コンストラクタ、静的フィールドを扱う方法を理解することで、特にクラスのインスタンス間で共有する必要がある定数値を扱う際に、コーディングの実践が向上します。

定数式

C#の定数式はコンパイル時に完全に評価できる式です。したがって、const 変数を宣言する際、その宣言の右辺は定数式でなければなりません。 これにより、const 値は固定され、コンパイル済みコードに直接埋め込まれるので、非常に最適化され効率的なアプリケーションになります。

public class Calculator
{
    public const int Multiplier = 2;
    public const int DoubleMultiplier = Multiplier * 2; // Constant expression
}
public class Calculator
{
    public const int Multiplier = 2;
    public const int DoubleMultiplier = Multiplier * 2; // Constant expression
}
Public Class Calculator
	Public Const Multiplier As Integer = 2
	Public Const DoubleMultiplier As Integer = Multiplier * 2 ' Constant expression
End Class
$vbLabelText   $csharpLabel

この例では、DoubleMultiplier はもう一つの定数値を使って計算されているため、定数式とみなされ、コンパイル時定数として適格です。

静的コンストラクタ

C#の静的コンストラクタは、クラスの静的フィールドを初期化する特別なコンストラクタです。 最初のインスタンスが作成される前、または任意の静的メンバーが参照される前に自動的に呼び出されます。 静的コンストラクタは、静的データの複雑な初期化や、インスタンスごとではなくタイプごとに一度だけ必要なアクションを実行するために便利です。

public class Program
{
    public static readonly string StartTime;

    static Program()
    {
        StartTime = DateTime.Now.ToString("T");
    }

    public static void DisplayStartTime()
    {
        Console.WriteLine($"Program started at: {StartTime}");
    }
}
public class Program
{
    public static readonly string StartTime;

    static Program()
    {
        StartTime = DateTime.Now.ToString("T");
    }

    public static void DisplayStartTime()
    {
        Console.WriteLine($"Program started at: {StartTime}");
    }
}
Public Class Program
	Public Shared ReadOnly StartTime As String

	Shared Sub New()
		StartTime = DateTime.Now.ToString("T")
	End Sub

	Public Shared Sub DisplayStartTime()
		Console.WriteLine($"Program started at: {StartTime}")
	End Sub
End Class
$vbLabelText   $csharpLabel

静的コンストラクタは StartTime フィールドを現在の時刻で初期化します。この値は DisplayStartTime 静的メソッドを通じてアクセスできます。静的コンストラクタがいかにしてランタイムまで知られていない値でreadonlyフィールドを初期化するために使用できるかを示しています。

静的フィールドと readonly および static キーワード

静的フィールドはクラスに属し、そのクラスのインスタンスには属さず、static キーワードを使って宣言されます。 readonly キーワードと組み合わせると、静的フィールドは宣言時または静的コンストラクタ内で初期化され、その後は変更できません。

public class Configuration
{
    public static readonly int MaxUsers;
    public const int TimeoutSeconds = 30;

    static Configuration()
    {
        MaxUsers = FetchMaxUsersFromConfig();
    }

    private static int FetchMaxUsersFromConfig()
    {
        // Imagine this method reads from a configuration file
        return 100;
    }
}
public class Configuration
{
    public static readonly int MaxUsers;
    public const int TimeoutSeconds = 30;

    static Configuration()
    {
        MaxUsers = FetchMaxUsersFromConfig();
    }

    private static int FetchMaxUsersFromConfig()
    {
        // Imagine this method reads from a configuration file
        return 100;
    }
}
Public Class Configuration
	Public Shared ReadOnly MaxUsers As Integer
	Public Const TimeoutSeconds As Integer = 30

	Shared Sub New()
		MaxUsers = FetchMaxUsersFromConfig()
	End Sub

	Private Shared Function FetchMaxUsersFromConfig() As Integer
		' Imagine this method reads from a configuration file
		Return 100
	End Function
End Class
$vbLabelText   $csharpLabel

この例は、ランタイムに、例えば設定ファイルから取得した値で、readonly 静的フィールド MaxUsers を初期化するための静的なコンストラクタの使用法を示しています。const フィールド TimeoutSeconds は、コードに直接埋め込まれたコンパイル時定数を表しています。

IronPDFの紹介

C# Const (How It Works For Developers): 図4 - IronPDF

IronPDFは、.NETアプリケーションでPDFドキュメントの作成、編集、および読み取りを可能にする多用途なライブラリです。 この強力なツールは、開発者がHTMLをPDFに変換し、コンテンツを操作し、PDFファイルからデータを簡単に抽出することによってPDF生成を簡素化します。

IronPDFの強みは、レイアウトとスタイルを保持しながらHTMLをPDFに変換することにあります。 これは、レポート、請求書、ドキュメントなどのウェブコンテンツからPDFを生成するための理想的なツールです。 HTMLファイル、URL、およびHTML文字列は、簡単に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");
    }
}
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とconstの例での開始

IronPDFを.NETプロジェクトに統合する方法を示すために、定数を使用してPDFドキュメントに変換したいHTML文字列を定義する単純な例を見てみましょう。

using IronPdf;

public class PdfGenerator
{
    // Defining a constant HTML template
    public const string HtmlTemplate = @"
        <html>
            <head>
                <title>PDF Report</title>
            </head>
            <body>
                <h1>IronPDF Report</h1>
                <p>This is a simple PDF document generated from HTML string using IronPDF.</p>
            </body>
        </html>";

    public static void CreatePdf(string filePath)
    {
        IronPdf.License.LicenseKey = "License";

        // Create a new PDF document from HTML template
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf(HtmlTemplate);

        // Save the PDF document to a file
        pdf.SaveAs(filePath);
        Console.WriteLine($"PDF generated successfully at {filePath}");
    }
}

class Program
{
    static void Main(string[] args)
    {
        PdfGenerator.CreatePdf("example.pdf");
    }
}
using IronPdf;

public class PdfGenerator
{
    // Defining a constant HTML template
    public const string HtmlTemplate = @"
        <html>
            <head>
                <title>PDF Report</title>
            </head>
            <body>
                <h1>IronPDF Report</h1>
                <p>This is a simple PDF document generated from HTML string using IronPDF.</p>
            </body>
        </html>";

    public static void CreatePdf(string filePath)
    {
        IronPdf.License.LicenseKey = "License";

        // Create a new PDF document from HTML template
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf(HtmlTemplate);

        // Save the PDF document to a file
        pdf.SaveAs(filePath);
        Console.WriteLine($"PDF generated successfully at {filePath}");
    }
}

class Program
{
    static void Main(string[] args)
    {
        PdfGenerator.CreatePdf("example.pdf");
    }
}
Imports IronPdf

Public Class PdfGenerator
	' Defining a constant HTML template
	Public Const HtmlTemplate As String = "
        <html>
            <head>
                <title>PDF Report</title>
            </head>
            <body>
                <h1>IronPDF Report</h1>
                <p>This is a simple PDF document generated from HTML string using IronPDF.</p>
            </body>
        </html>"

	Public Shared Sub CreatePdf(ByVal filePath As String)
		IronPdf.License.LicenseKey = "License"

		' Create a new PDF document from HTML template
		Dim renderer = New ChromePdfRenderer()
		Dim pdf = renderer.RenderHtmlAsPdf(HtmlTemplate)

		' Save the PDF document to a file
		pdf.SaveAs(filePath)
		Console.WriteLine($"PDF generated successfully at {filePath}")
	End Sub
End Class

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		PdfGenerator.CreatePdf("example.pdf")
	End Sub
End Class
$vbLabelText   $csharpLabel

この例では、HtmlTemplate 定数がシンプルなHTMLコンテンツで定義され、これが私たちのPDFドキュメントのソースとして機能します。 この CreatePdf メソッドは、IronPDFの ChromePdfRenderer クラスを使用してこのHTMLをPDFに変換し、指定されたファイルパスに保存します。 これは、IronPDFを使用して静的HTMLコンテンツからPDFを生成する方法を示しており、不変のHTMLテンプレートを定義するために const キーワードを活用しています。

出力

こちらが出力されたPDFファイルです:

C# Const (How It Works For Developers): 図5 - PDF出力

結論

C# Const (How It Works For Developers): 図6 - ライセンシング

C#において、const キーワードは、コンパイル時に既知の不変の値を定義するための価値ある機能です。それにより、どの値が定数であるかを明確に示し、コードの読みやすさと保守性を向上させます。 覚えておくべきことは、const 変数は暗黙的に静的であり、宣言時に初期化され、その値はコンパイル時定数でなければならないことです。 比較的に、readonly 変数はより柔軟性を提供しますが、ランタイムで初期化されます。

IronPDFは、PDF操作における強力な機能だけでなく、柔軟な採用モデルによっても際立っています。 開発者や組織がその機能を探索するために、IronPDFは無料試用を提供し、初期投資なしでその機能および統合の容易さを評価する素晴らしい機会を提供します。

IronPDFを商業利用のために進める準備ができたら、ライセンスオプションは$799から始まります。 この価格設定は、さまざまなプロジェクトの規模や種類のニーズに対応するために設計されており、開発および配布計画に最も適したライセンスを選択することを確実にします。

よくある質問

C# の const キーワードの目的は何ですか?

C# では、const キーワードは、コンパイル時に既知の定数フィールドまたは値を定義するために使用され、それによりプログラム全体で変更不可能になります。

C# で定数変数はどのように宣言しますか?

定数変数は const キーワードに続いてデータ型と初期値を使って宣言されます。例えば、const int myConstValue = 100; です。

C# での const と readonly の違いは何ですか?

コンパイル時定数 const は宣言時に初期化されなければならず、静的で変更できません。readonly 変数は宣言時またはコンストラクタ内で割り当てることができ、実行時の初期化を可能にします。

C# で const 変数をメソッド内に宣言することはできますか?

はい、const 変数はメソッド内で宣言することができ、これをローカル定数と呼び、そのメソッド内でのみアクセス可能です。

IronPDF は HTML を PDF にどのように変換しますか?

IronPDF は ChromePdfRenderer クラスを使用して、HTML 文字列、ファイル、または URL を PDF ドキュメントに変換します。

C# の定数と一緒にライブラリをどのように使用できますか?

IronPDF は、定数の HTML テンプレート文字列のように C# の定数を使用して、HTML コンテンツを PDF に効果的に変換することにより、PDF ドキュメントを生成することができます。

.NET アプリケーションで IronPDF を使用する理由は何ですか?

IronPDF は .NET アプリケーションで PDF ドキュメントの作成、編集、読み取りに使用され、HTML を PDF に変換することでレイアウトとスタイルを保持しながら PDF の生成を簡素化します。

C# におけるコンパイル時定数とは何ですか?

コンパイル時定数はコンパイル時に評価され固定される値です。const キーワードは変数がコンパイル時定数であることを保証します。

C# における静的コンストラクタとは何ですか?

静的コンストラクタはクラスの静的フィールドを初期化し、インスタンスが作成される前や静的メンバーがアクセスされる前に自動的に呼び出されます。

C# の定数式とは何ですか?

定数式とはコンパイル時に完全に評価できる式であり、const 宣言で使用することができます。

Curtis Chau
テクニカルライター

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

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