使用C#中的ref關鍵字,用2個簡單例子來說明

來源:互聯網
上載者:User

標籤:style   blog   http   color   使用   width   

在C#中,如果在方法參數前面加上ref關鍵字,說明參數傳遞的是引用,而不是值。如何理解呢?

 

  參數是簡單類型的例子

static void Main(string[] args)        {            string temp = "a";            Change(temp);            Console.WriteLine(temp);            ChangeByRef(ref temp);            Console.WriteLine(temp);            Console.ReadKey();        }        private static void Change(string temp)        {            temp = temp + "--changed";        }        private static void ChangeByRef(ref string temp)        {            temp = temp + "--refchanged";        }

輸出結果:
a
a--refchanged

● 在Change()方法中,雖然改變了temp的值,但方法沒有傳回值,列印temp依然是初始值a;
● 在ChnageByRef()方法中,由於加上了關鍵字,雖然也沒有傳回值,當改變temp的值後,temp的引用地址發生了改變,再次列印,temp的值為新的引用地址對應的值。

 

  參數是類類型的例子

class Program    {        static void Main(string[] args)        {            Pet p = new Pet(){Age = 5};            Console.WriteLine("初始年齡是:{0}", p.Age);            ChangeAge(p);            Console.WriteLine("改變pet的屬性值後,年齡是:{0}", p.Age);            ChangeAgeByRef(ref  p);            Console.WriteLine("改變pet引用地址後,年齡是:{0}", p.Age);            Console.ReadKey();        }        private static void ChangeAge(Pet p)        {            p.Age = 10;        }        private static void ChangeAgeByRef(ref Pet p)        {            p = new Pet(){Age = 20};        }    }    public class Pet    {        public int Age { get; set; }    }

輸出結果:

● 在ChangeAge()方法中,改變的是Pet執行個體的屬性值。
● 在ChangeAgeByRef()方法中,改變的Pet執行個體的引用地址。

 

  總結

方法參數無論是簡單類型,還是類類型,當在其前加上ref關鍵字後,對參數的賦值,實際上是改變的是方法參數變數的引用地址。使用ref注意點:
● 使用帶ref的方法之前,需要給方法參變數賦上初始值
● 無論是定義方法還是使用方法,都要帶上關鍵字ref

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.