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

深入理解 C# ref 與 out 關鍵字(一):值型別傳遞與指標等價性

     編輯:關於C語言

型別分類回顧

  • 值型別:sbyte, byte, char, short, ushort, int, uint, long, ulong, float, double, decimal, bool、struct, enum
  • 參考型別:string, object, class, interface, delegate, array

值型別 + ref/out = 指標語義

值型別預設傳值(複製)。加上 ref 或 out 後,方法直接操作原變數記憶體位址,效果等同 C 指標。

基本範例

static void Main() {
    int a = 5; int b;
    SquareRef(ref a); // a 必須已初始化
    SquareOut(out b); // b 無需初始化,方法內必指派
    Console.WriteLine($"a={a}, b={b}"); // a=25, b=100
}
static void SquareRef(ref int x) { x = x * x; Console.WriteLine($"ref內 x={x}"); }
static void SquareOut(out int y) { y = 10; y = y * y; Console.WriteLine($"out內 y={y}"); }

輸出:

ref內 x=25
out內 y=100
a=25, b=100

ref vs. out 差異

特性refout
呼叫端變數需初始化是否
方法內讀取參數前需指派否是
適用場景雙向資料流純輸出參數

下一篇將探討參考型別的複雜語義。

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