.NET ヘルプ

C# 定数(開発者向けの機能説明)

更新済み 3月 6, 2024
共有:

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
VB   C#

C# Const(開発者向けの動作方法):図1 - Constの出力

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

const と readonly 変数

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

一方、readonly変数は宣言時またはクラスのコンストラクタ内で代入できます。 これは柔軟性を提供します。なぜなら、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
VB   C#

C# 定数 (開発者向け動作の概要): 図2 - 読み取り専用フィールドの出力

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
VB   C#

C# 定数(開発者向けの仕組み):図3 - ローカル定数の出力

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

コンパイル時定数 vs. 実行時定数

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
VB   C#

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

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

定数式

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
VB   C#

この例では、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
VB   C#

静的コンストラクターは、現在の時刻でStartTimeフィールドを初期化します。この値はその後、DisplayStartTime静的メソッドを通じてアクセス可能となり、静的コンストラクターがランタイムまで不明な値で読み取り専用フィールドを初期化する方法を示しています。

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

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

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
VB   C#

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

IronPDFの紹介

C# 定数(開発者向けの動作の仕組み):図4 - IronPDF

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

IronPDFおよびconstの使用開始例

IronPDFを使い始めるには、まず最初にIronPDFのライブラリをプロジェクトにインストールします。以下はNode.jsでの例です。

const { IronPDF } = require('iron-pdf');
const PDFDocument = IronPDF.PdfDocument;
JAVASCRIPT

上記のコードは、IronPDFライブラリをインポートし、その中のPDFDocumentクラスを利用できるようにします。これで、PDF操作などの様々な機能を使えるようになります。

次に、PDFファイルを生成する簡単な例を見てみましょう。

async function createPDF() {
    const pdfDoc = new PDFDocument();
    pdfDoc.addPage().appendText("Hello, World!");
    await pdfDoc.saveAs("/path/to/output.pdf");
}

createPDF();
JAVASCRIPT

この関数は、新しいPDFドキュメントを作成し、"Hello, World!"というテキストを追加して保存するという簡単な例を示しています。

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
VB   C#

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

出力

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

C# Const(開発者向けの仕組み):図5 - PDF出力

結論

C# Const(開発者向けの動作方法):図6 - ライセンス

C# では、const キーワードは、コンパイル時に既知である不変の値を定義するための貴重な機能です。これは、どの値が定数であるかを明示することで、コードの読みやすさと保守性を向上させます。 覚えておいてください。const 変数は暗黙的に static であり、宣言時に初期化され、値はコンパイル時定数でなければなりません。 比較すると、readonly 変数はより柔軟性を持ちますが、実行時に初期化されます。

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

商業利用のためにIronPDFを使用する準備が整ったら、ライセンスオプションは$Lite Licenseからとなります。 この価格構造は、さまざまなプロジェクトの規模やタイプのニーズに対応するよう設計されており、開発および配布計画に最適なライセンスを選択できるようにしています。

< 以前
C# スレッドスリープメソッド(開発者向けの機能説明)
次へ >
RabbitMQ C#(開発者にとっての仕組み)

準備はできましたか? バージョン: 2024.9 新発売

無料のNuGetダウンロード 総ダウンロード数: 10,659,073 View Licenses >