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

C# ref 關鍵字深度解析 (2):參考型別實戰測試

     編輯:關於C語言

C++ 對照程式碼

以 C++ 指標語意對照 ref 行為:

void TestRef(MyClassPtr* m) { (*m)->Value = 10; }
void TestNoRef(MyClassPtr m) { m->Value = 20; }
void TestCreateRef(MyClassPtr* m) { delete *m; *m = new MyClass(); (*m)->Value = 100; }
void TestCreateNoRef(MyClassPtr m) { m = new MyClass(); m->Value = 200; }

執行結果

10   // TestRef 修改物件內容
20   // TestNoRef 修改物件內容
100  // TestCreateRef 重新指向新物件
100  // TestCreateNoRef 區域指標變更,不影響呼叫端

結論

  • ref 讓方法可「重新指派」呼叫端的參考型別變數。
  • 無 ref 時,方法收到的是參考的「複本」,可修改物件內容,但無法換掉呼叫端的參考。
  • 同樣邏輯適用於 struct(值型別),可自行測試驗證。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved