.NET 幫助

C# 常數(它如何為開發者運作)

發佈 2024年3月6日
分享:

在 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# 常數(它對開發者的作用):圖 1 - 常數輸出

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

const vs. 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);
    }
}
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 在類別中被宣告,但不在任何方法內時,它可以從該類別的任何靜態函式中存取,因為 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
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 關鍵字結合使用時,靜態字段可以在聲明時或在靜態構造函數中初始化,之後不可修改。

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 的強項在於轉換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
VB   C#

開始使用 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
VB   C#

在此範例中,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 用於商業用途時,授權選項從 $749 開始。 此定價結構旨在滿足不同項目規模和類型的需求,確保您可以選擇最適合您開發和分發計劃的許可證。

< 上一頁
C# Thread Sleep 方法(對開發人員的運作方式)
下一個 >
RabbitMQ C#(開發人員如何使用)

準備開始了嗎? 版本: 2024.12 剛剛發布

免費 NuGet 下載 總下載次數: 11,622,374 查看許可證 >