.NET ヘルプ

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

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(開発者向けの動作方法):図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
$vbLabelText   $csharpLabel

C# Const(開発者向けの仕組み):図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(開発者向けの働き方):図3 - ローカル定数の出力

対照的に、const がクラス内で宣言されていても、どのメソッドの外でも宣言されている場合、それは同じクラスの任意の静的関数からアクセス可能です。なぜなら、const フィールドは暗黙的に静的だからです。 しかし、インスタンス メソッドからクラス名を介さずに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
$vbLabelText   $csharpLabel

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
$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および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

この例は、実行時に取得される値で読み取り専用の静的フィールドMaxUsersを初期化するために、静的なコンストラクターを使用する方法を示しています。constフィールドTimeoutSecondsは、コード内に直接埋め込まれるコンパイル時定数を表します。

IronPDFの紹介

C# Const(開発者向けの機能解説):図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を使い始めるには、まず最初にIronPDFのライブラリをプロジェクトにインストールします。以下はNode.jsでの例です。

const { IronPDF } = require('iron-pdf');
const PDFDocument = IronPDF.PdfDocument;
javascript
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
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
$vbLabelText   $csharpLabel

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

出力

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

C# 定数 (開発者向けの動作方法):図 5 - PDF 出力

結論

C# Const(開発者向けの仕組み):図6 - ライセンス

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

IronPDFは、PDF操作における強力な機能だけでなく、柔軟な導入モデルでも際立っています。 開発者および組織向けに、IronPDFは無料トライアルを提供しており、初期投資なしでその機能と統合の容易さを評価する絶好の機会となっています。

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

チペゴ
ソフトウェアエンジニア
チペゴは優れた傾聴能力を持ち、それが顧客の問題を理解し、賢明な解決策を提供する助けとなっています。彼は情報技術の学士号を取得後、2023年にIron Softwareチームに加わりました。現在、彼はIronPDFとIronOCRの2つの製品に注力していますが、顧客をサポートする新しい方法を見つけるにつれて、他の製品に関する知識も日々成長しています。Iron Softwareでの協力的な生活を楽しんでおり、さまざまな経験を持つチームメンバーが集まり、効果的で革新的な解決策を提供することに貢献しています。チペゴがデスクを離れているときは、良い本を楽しんだり、サッカーをしていることが多いです。
< 以前
C# スレッドスリープメソッド(開発者向けの機能説明)
次へ >
RabbitMQ C#(開発者にとっての仕組み)