首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> C# >> 關於C#

C# 類別基礎完整指南:存取修飾詞、方法、欄位、屬性、常數與唯讀

     編輯:關於C#

類別聲明與存取修飾詞

// 預設 internal (組件內可見)
class InternalClass { }

// 公開 (跨組件可見)
public class PublicClass { }

// 抽象 (不可實例化,供繼承)
abstract class AbstractBase { }

// 密封 (不可繼承)
sealed class SealedLeaf { }
  • 巢狀類別可用 private/protected/private protected。
  • 所有類別隱含繼承 System.Object (ToString、Equals、GetHashCode...)。

方法

存取修飾詞

修飾詞可見範圍
private類別內部 (預設)
protected類別內部 + 衍生類
internal同一組件
protected internal同一組件 或 衍生類 (OR)
private protected同一組件 且 衍生類 (AND, C# 7.2+)
public任何地方

靜態 vs 實例方法

class MathUtil
{
    public static int Add(int a, int b) => a + b; // 類別呼叫: MathUtil.Add(1,2)
    public int Multiply(int a, int b) => a * b;   // 實例呼叫: new MathUtil().Multiply(1,2)
}
  • 靜態方法屬於型別,無 this,不可存取實例成員。
  • 實例方法屬於物件,有 this 參考。

欄位

class FieldDemo
{
    public int PublicField;           // 公開欄位 (不建議,破壞封裝)
    private int _privateField;        // 私有欄位
    public static int StaticField;    // 靜態欄位 (類別級)
    public const double PI = 3.14159; // 常數 (編譯期常數,隱含 static)
    public readonly int _id;          // 唯讀 (執行期常數,可在建構函式賦值)
    
    public FieldDemo(int id) => _id = id;
}

const vs readonly 深度比較

特性constreadonly
初始化聲明時 (編譯期)聲明時或建構函式 (執行期)
靜態性隱含 static實例或靜態 (static readonly)
型別限制值型別、string、null任何型別
版本影響修改需重編譯呼叫端僅重編譯定義組件

屬性

完整屬性語法

class Person
{
    private string _name;
    public string Name
    {
        get => _name;
        set => _name = value?.Trim() ?? throw new ArgumentNullException();
    }
}

自動實作屬性 (C# 3+)

public string Name { get; set; }           // 可讀寫
public string Nickname { get; private set; } // 唯讀 (外部不可設)
public int Age { get; init; }               // 僅初始化可設
public string Id { get; } = Guid.NewGuid().ToString(); // 唯讀 + 初始化運算式

屬性 vs 欄位 選擇指南

  • 永遠優先屬性:封裝、驗證、通知、序列化、繫結、介面定義、除錯監看。
  • 欄位僅用於:私有實作細節、極效能敏感熱路徑、ref/out 參數需求、互操作結構體。

唯讀屬性模式

// 僅 get
public string FullName => $"{FirstName} {LastName}"; // 運算式主體 (C# 6+)

// init 存取子
public DateTime CreatedAt { get; init; } // 物件初始化器可設,之後不可變

// 建構函式注入
public class Order
{
    public int Id { get; }
    public Order(int id) => Id = id;
}

物件初始化器語法

var p = new Person 
{ 
    Name = "John", 
    Age = 30 
}; // 相當於建立後設定屬性

總結

類別是 C# 封裝的基本單位。掌握存取修飾詞控制可見性、靜態/實例區分生命週期、屬性封裝欄位實現資料保護、const/readonly正確表達常數語意、自動實作屬性減少樣板代碼,是寫出專業 C# 代碼的基石。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved