IRONSOFTWAREHOME
開發者更新

C# 常量(對於開發者的運行原理)

Jacob Mellor, Chief Technology Officer @ Team Iron
Jacob Mellor
Updated: 2026年4月21日

在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);
    }
}

C# 常數(開發人員如何使用):圖1 - 常數輸出

此範例說明了在類中使用常數整數(const int)的簡單用法。 MaxSize常數在同一類中是可存取的,並且可以直接在static void Main方法中使用。

const 與 readonly 變數

儘管constreadonly關鍵字都用於宣告不可變的值,但它們之間有重要的區別。 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);
    }
}

C# 常數(開發人員如何使用):圖2 - Readonly欄位輸出

const變數的範圍

常數變數可以在方法中宣告或者作為類的成員。 當您在方法中宣告const變數時,這稱為局部常數。 局部常數只能在它們被宣告的那個方法中存取。

public class Program
{
    static void DemoMethod()
    {
        const int LocalConst = 5; // local constant
        Console.WriteLine(LocalConst);
    }
}

C# 常數(開發人員如何使用):圖3 - 局部常數輸出

相比之下,當const在類中而不在任何方法之外宣告時,它可以從相同類的任何靜態函式存取,因為const欄位隱式是靜態的。 但是,嘗試從實例方法中存取const欄位而不通過類名參考它將導致編譯錯誤。

編譯時與運行時常數

const值的主要特點是,它們在編譯時被評估。這意味著const欄位的值必須由編譯器完全知道和評估。 這與在運行時被評估的變數不同,後者的值是在程式執行期間確定的。

例如,嘗試基於在運行時執行的計算為const欄位分配值將導致編譯時錯誤。 編譯器要求來自常量表達式或在編譯時已知的文字值的const值。

const double Pi = Math.PI; // This will cause a compile time error

Advanced Use of Constants and Static Members in C#

除了C#中constreadonly的基礎知識之外,理解如何使用常量表達式、靜態構造函式和靜態欄位可以提升您的編碼技術,特別是在處理需要在類實例間共享的常量值時。

常量表達式

C#中的常量表達式是一種可以在編譯時完全評估的表達式。因此,當您宣告const變數時,其宣告的右邊必須是常量表達式。 這確保了const值是固定的,並可以直接嵌入到已編譯的程式碼中,從而帶來非常高的優化和效率應用程式。

public class Calculator
{
    public const int Multiplier = 2;
    public const int DoubleMultiplier = Multiplier * 2; // Constant expression
}

在這個例子中,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}");
    }
}

靜態構造函式以當前時間初始化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;
    }
}

此範例展示了一個靜態的構造函式用於初始化一個readonly的靜態欄位,MaxUsers,其值在運行時獲取,可能來自配置文件。const欄位TimeoutSeconds表示一個編譯時常量,直接嵌入到程式碼中。

簡介IronPDF

C# 常數(開發人員如何使用):圖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");
    }
}

開始使用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");
    }
}

在這個範例中,HtmlTemplate常數用簡單的HTML內容定義,作為我們PDF文件的來源。 CreatePdf方法使用IronPDF的ChromePdfRenderer類將此HTML轉換為PDF,並將其儲存到指定的文件路徑。 這展示了使用IronPDF從靜態HTML內容生成PDF的輕鬆性,利用const關鍵字來定義不可變的HTML模板。

輸出

以下是輸出的PDF文件:

C# 常數(開發人員如何使用):圖5 - PDF輸出

結論

C# 常數(開發人員如何使用):圖6 - 授權

在C#中,const關鍵字是一個寶貴的功能,用於定義在編譯時已知的不可變值。它通過清楚地指示哪個值是常數,幫助提高您的程式碼的可讀性和可維護性。 請記住,const變數是隱含靜態的,必須在宣告時初始化,其值亦須為編譯時常量。 相較之下,readonly變數提供更多靈活性,但在運行時初始化。

IronPDF不僅因其在PDF操作中的強大功能而脫穎而出,還因其靈活的採用模式。 對於開發人員和希望探索其功能的組織,IronPDF提供免費試用,提供了一個絕佳的機會評估其功能和整合的便利性,而無需提前投資。

當準備好將IronPDF用於商業用途時,授權選項從$999開始。 這種定價結構旨在滿足不同專案大小和型別的需求,確保您可以選擇最適合您開發和分發計劃的授權。

Jacob Mellor, Chief Technology Officer @ Team Iron
Chief Technology Officer

Jacob Mellor is Chief Technology Officer at Iron Software and a visionary engineer pioneering C# PDF technology. As the original developer behind Iron Software's core codebase, he has shaped the company's product architecture since its inception, transforming it alongside CEO Cameron Rimington into a 50+ person company serving NASA, Tesla, and global government agencies.

...
Read More

Related Articles

Key in blue circle

立即免費取得 30 天試用金鑰

bullet_checked無需信用卡或建立帳號
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
預訂您的免費現場演示
Booking Badge related to IronPDF Product Demo

受到全球數百萬工程師的信任

Iron Software的客戶標誌
獲取您的無義務諮詢
填寫以下表格或電子郵件sales@ironsoftware.com
您的詳細資訊將始終保密
受到全球數百萬工程師的信任
Iron Software的客戶標誌
立即獲取您的30天試用金鑰
無需信用卡或帳戶建立