C#中ref關鍵字的用法
更新時間:2022年07月31日 16:32:45 作者:Darren?Ji
這篇文章介紹了C#中ref關鍵字的用法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
在C#中,如果在方法參數(shù)前面加上ref關鍵字,說明參數(shù)傳遞的是引用,而不是值。如何理解呢?
參數(shù)是簡單類型的例子
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的引用地址發(fā)生了改變,再次打印,temp的值為新的引用地址對應的值。
參數(shù)是類類型的例子
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實例的引用地址。
總結
方法參數(shù)無論是簡單類型,還是類類型,當在其前加上ref關鍵字后,對參數(shù)的賦值,實際上是改變的是方法參數(shù)變量的引用地址。使用ref注意點:
- 使用帶ref的方法之前,需要給方法參變量賦上初始值
- 無論是定義方法還是使用方法,都要帶上關鍵字ref
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。如果你想了解更多相關內(nèi)容請查看下面相關鏈接
相關文章
asp.net core mvc權限控制:在視圖中控制操作權限
本文主要介紹了asp.net core mvc權限控制:在視圖中控制操作權限。具有很好的參考價值,下面跟著小編一起來看下吧2017-02-02