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

C# 進階核心(二):類別與方法完整指南

     編輯:關於C#

一、類別概述——物件的藍圖

類別定義了物件擁有的資料(欄位/屬性)與行為(方法)。實例化即依藍圖建立具體物件。

範例:醫生類別

public class Doctor {
    // 欄位
    private string _name;
    private byte _age;

    // 建構函式多載
    public Doctor() { }
    public Doctor(string name, byte age) => (_name, _age) = (name, age);

    // 屬性(封裝欄位)
    public string Name { get => _name; set => _name = value; }
    public byte Age { get => _age; set => _age = value; }

    // 實例方法
    public string DoWork() => "我會給人治病喔~";

    // 靜態方法
    public static string DoAnother() => "執行的另一個靜態方法";
}

// 使用
var dc1 = new Doctor { Name = "李四", Age = 25 };
var dc2 = new Doctor("張三", 35);
Console.WriteLine(dc1.DoWork());
Console.WriteLine(Doctor.DoAnother()); // 靜態方法透過類別名呼叫

關鍵點

  • 類別為參考型別,實例儲存於 Managed Heap,變數持有參考。
  • 屬性取代傳統 `GetX/SetX`,語法更優雅、支援驗證邏輯。
  • 建構函式自動執行初始化,確保物件生出生即合法。

二、方法深度解析

1. 參數傳遞機制

關鍵字傳遞方式適用型別可修改原值?
(無)值傳遞值型別:複製值
參考型別:複製參考
值型別:否
參考型別:可修改物件內容,不可換參考
ref參考傳遞值/參考型別是(含換新物件)
out輸出參數值/參考型別是(建構函式前必指派)
in (C# 7.2+)唯讀參考參考型別/大型結構否(編譯器強制)

範例:ref vs 值傳遞


static void Modify(int[] arr, int x) {
    arr[0] = 100; // 修改陣列元素(參考型別內容)
    x = 10;       // 修改區域副本
}

static void Main() {
    int[] a = { 0, 1, 2 };
    int y = 30;
    Modify(a, y);
    Console.WriteLine($"{a[0]}, {y}"); // 輸出: 100, 30
}

2. out 參數——多重回傳值慣用法


static bool TryParseInt(string s, out int result) {
    return int.TryParse(s, out result); // 直接透傳
}

static void Main() {
    if (TryParseInt("123", out int val))
        Console.WriteLine(val); // 123
}

3. 方法多載——同名不同參數簽章

  • 區別:參數個數、型別、順序不同。
  • 回傳型別不可作為多載依據。
  • 支援 `params` 參數陣列:`void Log(params string[] msgs)`。

static int Add(int a) => a + 100;
static string Add(string s) => s;
static int Add(int a, int b) => a + b;
// 呼叫時編譯器依引數型別自動綁定

4. 進階特性(C# 7+)

  • 運算式主體成員: `public int Square(int x) => x * x;`
  • 元組回傳: `public (int Sum, int Count) Calc(int[] arr) => (arr.Sum(), arr.Length);`
  • 區域函式: 方法內嵌方法,捕獲外層變數,避免委派開銷。
  • ref 回傳/區域變數: 高效能場景避免複製大型結構。

類別封裝資料與行為,方法實作演算法邏輯。精通參數傳遞語意、多載規則與現代 C# 語法糖,是寫出高品質程式碼的基石。

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