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

C# 核心基礎知識點速查:變量、參數、屬性、對象初始化與 this

     編輯:PHP 相關知識

本文梳理 C# 基礎但關鍵的語言機制:本地變量 vs 字段、var 類型推斷、參數傳遞模式、屬性本質、對象初始化語法、this 用法,助力面試複習與日常開發避坑。

1. 本地變量 vs 實例字段

維度實例字段本地變量
生存期對象創建 ~ 對象不可達 (GC 回收)聲明點 ~ 代碼塊結束
隱式初始化默認值 (0/null/false)**無**,使用前必須賦值,否則編譯錯誤
存儲位置堆 (對象內部)值類型→棧;引用類型→引用在棧,對象在堆

2. var 隱式類型變量

var i = 10;        // int
var s = "hello";   // string
var list = new List(); // List
// 編譯期推斷,運行期無開銷,不可用於字段/屬性/返回值,僅限本地變量

3. 參數傳遞四種模式

模式關鍵字機制適用場景
值傳遞(無)複製值/引用到形參默認,不可修改實參
引用傳遞ref形參成爲實參別名,指向同一內存需修改實參值類型、或交換引用
輸出參數out類似 ref,但**不要求實參預先賦值**,方法內**必須**賦值TryParse 模式、多返回值
只讀引用in (C# 7.2+)引用傳遞但禁止修改,編譯器強制大結構體傳遞避免複製,保證不可變
// out 示例
bool TryParse(string s, out int result) {
    result = 0; // 必須賦值
    return int.TryParse(s, out result);
}

4. 屬性本質:封裝的 get/set 方法

  • 不分配存儲空間(除非 auto-property 產生隱私字段)。
  • set 內隱含參數 value,類型與屬性同,返回 void。
  • get 無參數,返回屬性類型。
  • 可分別設置訪問級別:public int Id { get; private set; }。

5. 對象初始化器語法

class Point { public int X, Y, Z; public Point(int z) { Z = z; } }

var p1 = new Point();           // X=0,Y=0,Z=0
var p2 = new Point { X=4, Y=5, Z=6 };         // 無構造函數參數
var p3 = new Point(9) { X=7, Y=8 };           // 有構造函數參數,括號可省略 new Point(9) { ... }

6. this 關鍵字

  • 代表**當前實例**,僅可用於實例構造函數、實例方法、屬性/索引器存取器。
  • **不可**用於靜態成員。
  • 主要用途:
    1. 區分同名字段/參數:this.name = name;
    2. 作為實參傳遞:OtherService.Register(this);
    3. 鏈式調用返回:return this;
    4. 構造函數鏈調用:this(...) 調用本類其他構造函數。

速記口訣

  • 字段在堆、本地在棧、字段有默認值、本地必須賦值。
  • ref 双向、out 单向輸出、in 只讀引用。
  • 屬性是方法、不佔內存、get/set 可異權。
  • 對象初始化器、構造後賦字段、語法糖最甜。
  • this 指當前、靜態不用、區分同名、傳自己。

夯實基礎,才能在泛型、委託、異步、Span、Source Generator 等進階特性上行穩致遠。

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