IRONSOFTWAREHOME
開發者更新

C# Getter Setter(開發者的工作原理)

Jacob Mellor,首席技術官 @ Team Iron
Jacob Mellor
Updated: 2026年4月21日

Getter 和 Setter 是物件導向程式語言中如 C# 的基本概念。 這兩種方法允許我們控制類別屬性的存取和修改。 在本教程中,我們將透過程式碼塊探索 C# 中 getter 和 private setter 的初學者和中級層面。

Getter 和 Setter 簡介

什麼是 Getter 和 Setter?

基本上,getter 和 setter 只是允許存取類別中私有變數的方法。 Getter 返回私有欄位變數的值,而 Setter 則修改它。 這些方法確保類別的內部資料(欄位)能夠被安全且正確地存取或修改。

為什麼我們需要它們?

想像有一個 public class Car 具有一個 private string description 屬性。 如果類別外的人想知道描述,因為它是私有的,他們不能直接存取它。 這時 Getter 和 Setter 就派上用場了。

Getter 可以允許使用者檢索 private string description 的值,而不讓他們直接修改。 而 Setter 則允許我們設定條件下的使用者修改描述。

存取修飾符

存取修飾符定義了從類別外部存取欄位或屬性的可見性和可存取性等級。 最常使用的修飾符是 public 和 private。

  • Public:宣告為 public 的欄位或屬性可以在程式中的任何地方被存取。 例如,您可能有一個 public int Age 屬性可以被任意部分的程式碼存取和修改。
  • Private:宣告為 private 的屬性或欄位只能在定義的類別內部存取,例如 private int age。 這種封裝有助於防止未授權的修改,並確保類別的內部狀態能被適當維護。

簡單的 Getter 和 Setter

讓我們從一個簡單的例子開始。

using System;

public class Person
{
    private string name;  // This is a private string name property variable
    
    // This is the getter
    public string GetName()
    {
        return name;
    }

    // This is the setter
    public void SetName(string newName)
    {
        name = newName;
    }
}

class Program
{
    static void Main()
    {
        Person person = new Person();
        person.SetName("John");
        Console.WriteLine(person.GetName());
    }
}

在上面的 class Person 中,我們有一個名為 GetName 的 getter 和一個名為 SetName 的 setter 用於 name 屬性。 當您執行 static void Main 方法時,它將列印 "John",因為我們利用 setter 為名稱設置了這個值。

自動實作屬性

現在,您可能在想,"我總是需要為 getter 和 setter 寫單獨的方法嗎?"答案是"不。"C# 引入了一個叫做"自動實作屬性"的概念來簡化這個過程。

在 C# 中,您可以使用自動屬性,給您一個聲明 private field 和其相關屬性的簡便方法。 這裡有一個範例:

using System;

public class Student
{
    public string Name { get; set; } // This is an auto-implemented or automatic property
    public string Title { get; set; } // Another auto-implemented property
}

class Program
{
    static void Main()
    {
        Student student = new Student();
        student.Name = "Alice";  // Using setter
        Console.WriteLine(student.Name);  // Using getter
    }
}

在 Student 類別中,Name 屬性是自動實作的 getter 和 setter。 C# 編譯器在幕後建立一個 private string name 欄位,Name 屬性提供存取這個欄位的方法。

屬性中的進階存取修飾符

唯讀屬性

有時,您可能希望提供一個可以讀取而不能外部修改的屬性。 這就是唯讀屬性派上用場的時候。 您可以省略屬性中的 setter 使其為唯讀。

假設我們想為 Person 類別新增一個唯讀的 string Description 屬性:

public class Person
{
    public string Name { get; set; }
    public string Description { get; }
    
    public Person(string name, string description)
    {
        Name = name;
        Description = description;
    }
}

在這個例子中,Description 屬性只能在 Person 類別的構造函式內設置。 一旦設置,它無法在外部修改。

私有 Setter

有時,您可能希望允許屬性從類別外部讀取,但只能在類別內設置。 這是利用 private set 實現的。

using System;

public class Program
{
    public string Description { get; private set; }

    public Program()
    {
        Description = "This is a program about getters and setters.";
    }
}

class ProgramTest
{
    static void Main()
    {
        Program myProgram = new Program();
        Console.WriteLine(myProgram.Description);  // Allowed
        // myProgram.Description = "New Description";  // Not allowed
    }
}

在 class Program 中,Description 屬性有一個 private set,這意味著它無法在類別外部改變,從而確保資料的完整性。

繼承與覆蓋

當使用派生類別時,您可以覆蓋 getter 和 setter 方法來自定義其行為。 這允許您在取得或設置值時新增額外的邏輯。

public class Person
{
    public virtual string Name { get; set; }
}

public class Student : Person
{
    private string studentID;

    public override string Name
    {
        get { return base.Name; }
        set
        {
            if (!string.IsNullOrEmpty(value))
                base.Name = value;
        }
    }
}

在這個例子中,Student 類別繼承自 Person 並覆蓋 Name 屬性的 setter。 在設置名稱之前新增了一個檢查,確保其不為空或 null。

Introducing Iron Suite to Enhance Your C# Development

Iron Suite 是一組提供顯著提高 C# 開發能力的研究工具。 它包含 IronPDF、IronXL、IronOCR 和 IronBarcode。 每個工具都有獨特的用途,可以整合到 C# 的各個方面。

IronPDF - 強大的 PDF 管理工具

進一步了解 IronPDF,這是一個允許開發人員在 C# 中建立、讀取和編輯 PDF 文件的程式庫。 無論是將 HTML 轉換為 PDF 還是透過 getters 和 setters 管理 PDF 元資料,IronPDF 都能滿足您的需求。

IronPDF在HTML到PDF轉換方面表現出色,確保精確保留原始設計和樣式。 它非常適合從基於網路的內容如報告、發票和文件中建立PDF。 IronPDF支持HTML文件、URLs和原始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");
    }
}

IronXL - Excel 操作變得簡單

在處理 Excel 檔案時,IronXL Excel Library 簡化了讀寫過程。 這個工具可以用來操作 Excel 文件的私有和公共字串或整數,就像在類別中使用 getter 和 setter 的相同語法一樣。

IronOCR - Optical Character Recognition in C#

探索 IronOCR,這是一個將影像轉換為可搜尋文字的光學文字識別程式庫。 如果您的應用程式涉及從掃描文件中讀取文字,IronOCR 的強大功能可以輕鬆整合。 它可以處理私有欄位和公共字串描述,就像您在前面的例子中設定的 Person 或 Student 類別一樣。

IronBarcode - 條碼讀取與書寫程式庫

發掘 IronBarcode 的功能,適用於需要條碼讀取和書寫的應用程式。 它允許直接存取條碼資料和透過自動屬性自訂,就像 C# 程式設計中使用的 getters 和 setters 一樣。

Iron Suite and Getters and Setters

Iron Suite 套件無縫整合於 C# 開發,包括 getters 和 setters。 這些工具為任何 C# 專案增值。

結論

總結:

  1. Getter and Setter:它們有助於存取和修改類別的私有欄位。
  2. Auto Properties:透過自動屬性提供一種優雅的方法來擁有自動的 getters 和 setters。
  3. Access Modifiers:它們有助於微調屬性的可存取性。

到目前為止,您應該對如何在 C# 中使用 getters 和 setters 有了一個紮實的理解。

Iron Suite 的工具集合為 C# 開發人員提供了強大的功能。 這些產品,包括 IronPDF、IronXL、IronOCR 和 IronBarcode,均附帶Iron Software 工具的免費試用,允許您無需任何初始投資就能探索並整合這些強大的程式庫到您的項目中。

當您準備好承諾時,單獨的授權價格從 $999 開始。 如果您發現有多個工具符合您的需求,您可以利用這個機會,以僅僅兩個單獨授權的價格購買完整的 Iron Suite 套件。

Jacob Mellor,首席技術官 @ Team Iron
首席技術官

Jacob Mellor是Iron Software的首席技術官,一位在C# PDF技術上開創先河的遠見工程師。作為Iron Software核心程式碼庫的原開發者,他從創立以來就一直在塑造公司的產品架構,與首席執行官Cameron Rimington一起將公司轉變為服務於NASA、特斯拉和全球政府公司的50多名人員的公司。

...
閱讀更多

相關文章

Key in blue circle

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

Your trial license will be sent to your email address

無任何限制。100% 解鎖。無需信用卡。

OR
bullet_checked無需信用卡或建立帳號無任何限制。100% 解鎖。無需信用卡。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried Iron Suite
預訂您的免費現場演示
Booking Badge

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

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

版本: 2026.9

PM > Install-Package IronPdf
nuget.org/packages/IronPdf/
  1. 在解決方案資源管理器,右鍵點選參考,管理NuGet包
  2. 選擇瀏覽並搜尋"IronPdf"
  3. 選擇套件並安裝
C# PDF DLL
下載DLL

版本: 2026.9

或者點擊此處下載Windows安裝程式。

  1. 下載並解壓IronPDF到類似~/Libs的位置,位於您的解決方案目錄中
  2. 在Visual Studio解決方案資源管理器,右鍵點選參考。選擇瀏覽,"IronPdf.dll"

授權從$999起