C#中ref關(guān)鍵字的用法
在C#中,如果在方法參數(shù)前面加上ref關(guān)鍵字,說明參數(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"; }
輸出結(jié)果:
a
a--refchanged
- 在Change()方法中,雖然改變了temp的值,但方法沒有返回值,打印temp依然是初始值a;
- 在ChnageByRef()方法中,由于加上了關(guān)鍵字,雖然也沒有返回值,當(dāng)改變temp的值后,temp的引用地址發(fā)生了改變,再次打印,temp的值為新的引用地址對(duì)應(yīng)的值。
參數(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; } }
輸出結(jié)果:
- 在ChangeAge()方法中,改變的是Pet實(shí)例的屬性值。
- 在ChangeAgeByRef()方法中,改變的Pet實(shí)例的引用地址。
總結(jié)
方法參數(shù)無論是簡單類型,還是類類型,當(dāng)在其前加上ref關(guān)鍵字后,對(duì)參數(shù)的賦值,實(shí)際上是改變的是方法參數(shù)變量的引用地址。使用ref注意點(diǎn):
- 使用帶ref的方法之前,需要給方法參變量賦上初始值
- 無論是定義方法還是使用方法,都要帶上關(guān)鍵字ref
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接
- C#關(guān)鍵字in、out、ref的作用與區(qū)別
- 詳解C#中三個(gè)關(guān)鍵字params,Ref,out
- C#編程中使用ref和out關(guān)鍵字來傳遞數(shù)組對(duì)象的用法
- C#中按引用傳遞與按值傳遞的區(qū)別,以及ref與out關(guān)鍵字的用法詳解
- 深入淺析C#?11?對(duì)?ref?和?struct?的改進(jìn)
- C# ref and out的使用小結(jié)
- c#基礎(chǔ)系列之ref和out的深入理解
- C#方法中參數(shù)ref和out詳解
- 詳解C#中的out和ref
- C#中out與ref的區(qū)別實(shí)例解析
- 解析C#中的ref和out參數(shù)
相關(guān)文章
asp.net core mvc權(quán)限控制:在視圖中控制操作權(quán)限
本文主要介紹了asp.net core mvc權(quán)限控制:在視圖中控制操作權(quán)限。具有很好的參考價(jià)值,下面跟著小編一起來看下吧2017-02-02C#實(shí)現(xiàn)將Word轉(zhuǎn)化分享為電子期刊
曾經(jīng)由一個(gè)項(xiàng)目,要求實(shí)現(xiàn)制作電子期刊定期發(fā)送給企業(yè)進(jìn)行閱讀,由編輯人員使用 Microsoft Word先生成PDF文件,然后將生成的PDF文件轉(zhuǎn)化為JPEG文件,最后將JPEG文件生成電子書模式,本文給大家介紹了C#實(shí)現(xiàn)將Word轉(zhuǎn)化分享為電子期刊,需要的朋友可以參考下2023-12-12C#實(shí)現(xiàn)在控制臺(tái)輸入密碼顯示星號(hào)的方法
這篇文章主要介紹了C#實(shí)現(xiàn)在控制臺(tái)輸入密碼顯示星號(hào)的方法,感興趣的小伙伴們可以參考一下2016-04-04C#制作網(wǎng)站掛機(jī)程序的實(shí)現(xiàn)示例
本文主要介紹了C#制作網(wǎng)站掛機(jī)程序,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-10-10c# xml轉(zhuǎn)word的實(shí)現(xiàn)示例
這篇文章主要介紹了c# xml轉(zhuǎn)word的實(shí)現(xiàn)示例,幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下2021-04-04C#實(shí)現(xiàn)讀取txt文件生成Word文檔
大家好,本篇文章主要講的是C#實(shí)現(xiàn)讀取txt文件生成Word文檔,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下2022-01-01