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

C# ref 與 out 參數修飾詞差異總結

     編輯:關於C語言

ref 傳遞參數位址,out 用於回傳值,兩者皆允許方法修改引數值,但有關鍵差異:

特性refout
呼叫前必須指派初值是否
方法內是否清空變數否是 (視為未指派)
方法返回前必須指派否 (可不修改)是 (所有 out 參數)

程式碼驗證

static void outTest(out int x, out int y)
{
    // 離開前必須指派 x, y
    x = 1; y = 2;
}

static void refTest(ref int x, ref int y)
{
    x = 1; y = x; // 可讀取原值
}

public static void Main()
{
    int a, b;
    outTest(out a, out b);      // OK: a,b 未指派也可
    Console.WriteLine($"a={a};b={b}");

    int c = 11, d = 22;
    outTest(out c, out d);      // 原值會被清空重新指派
    Console.WriteLine($"c={c};d={d}");

    int o = 11, p = 22;
    refTest(ref o, ref p);      // 必須先指派
    Console.WriteLine($"o={o};p={p}");
}

關鍵點:out 適合多重回傳值場景,ref 適用於需讀取並修改原值的情況。

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