五分鐘快速了解 [傳址,傳參考,傳址]

傳址,傳參考,傳址 是基本但重要的概念。此概念在很多語言都通用

我使用Gif動畫檔 快速帶領大家了解 傳址,傳參考,傳址

  1. 傳值(Call By Value)

    顧名思義 是把傳到 另一個記憶體位置

https://dotblogsfile.blob.core.windows.net/user/%E4%B9%9D%E6%A1%83/e39d0fd8-5258-4484-949c-3019082ff20e/1519627294_92268.gif

  1. 傳址 (Call By Adress)

是把記憶體位置傳到 另一個記憶體位置

補充:嚴格來說(Call By Adress)是不正統的說法,其實傳址也是傳值但傳的是記憶體位置

https://dotblogsfile.blob.core.windows.net/user/%E4%B9%9D%E6%A1%83/e39d0fd8-5258-4484-949c-3019082ff20e/1519627835_01874.gif

  1. 傳參考(Call By Reference)

    是把記憶體位置傳到 移到另一個記憶體位置上 (可看作同一個物件)

https://dotblogsfile.blob.core.windows.net/user/%E4%B9%9D%E6%A1%83/e39d0fd8-5258-4484-949c-3019082ff20e/1519627909_09266.gif

在C#廣義來說

  • 基本型別 Struct (int,double,float,byte …) 可看作 傳值

  • 一般型別 Class (自訂Class ,SqlConnection….) 可看作 傳址 更精確來說是傳Stack的值(指向Heap的記憶體位置)

在C#中並沒傳參考,只有傳值和傳址

此文作者:Daniel Shih(石頭)
此文地址https://isdaniel.github.io/ref-address/
版權聲明:本博客所有文章除特別聲明外,均採用 CC BY-NC-SA 3.0 TW 許可協議。轉載請註明出處!


如果本文對您幫助很大,可街口支付斗內鼓勵石頭^^