第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

C#基礎(chǔ)知識(shí),值類型、引用類型與ref關(guān)鍵字

標(biāo)簽:
C#

在C#中,ref的意思是按引用传递。可以参考C++:

view plaincopy to clipboardprint?

  1. int a = 10, b = 20;   

  2. void swap(int x, int y)   

  3. {   

  4.     int temp = x;   

  5.     x = y;   

  6.     y = temp;   

  7. }  

如果简单的调用这个swap,比如:swap(a, b),那么你根本没办法交换这两个变量的值,因为x和y都是形参,在swap返回的时候,x和y都被释放了。但如果是这样定义swap:

view plaincopy to clipboardprint?

  1. void swap (int& x, int& y)   

  2. {   

  3.     int temp = x;   

  4.     x = y;   

  5.     y = temp;   

  6. }  

 

也就相当于x与a,y与b指向同一个内存地址,那么对x的操作也就相当于对a的操作。那么在C#里面,这种效果对于值类型是很明显的。

view plaincopy to clipboardprint?

  1. class Program   

  2. {   

  3.     static void Test(ref int b)   

  4.     {   

  5.         b = 2;   

  6.     }   

  7.   

  8.     static void Main(string[] args)   

  9.     {   

  10.         int b = 1;   

  11.         Test(ref b);   

  12.         Console.WriteLine(b);   

  13.     }   

  14. }   

此时的输出是2,也就是Test方法中的b与Main中的b指向同一个内存地址,那么对Test.b的操作也就是对Main.b的操作。你如果把程序改成:

view plaincopy to clipboardprint?

  1. class Program   

  2. {   

  3.     static void Test(int b)   

  4.     {   

  5.         b = 2;   

  6.     }   

  7.   

  8.     static void Main(string[] args)   

  9.     {   

  10.         int b = 1;   

  11.         Test(b);   

  12.         Console.WriteLine(b);   

  13.     }   

  14. }   

 

那么输出的还是1,因为Test.b不是Main.b的引用,也就是一个单独的形参。现在再看对于引用类型,会是什么效果:

view plaincopy to clipboardprint?

  1. class TestClass   

  2. {   

  3.     public int b;   

  4. }   

  5.   

  6. class Program   

  7. {   

  8.     static void Test(TestClass b)   

  9.     {   

  10.         b.b = 2;   

  11.     }   

  12.   

  13.     static void Main(string[] args)   

  14.     {   

  15.         TestClass b = new TestClass();   

  16.         b.b = 1;   

  17.         Test(b);   

  18.         Console.WriteLine(b.b);   

  19.     }   

  20. }   

上面的代码,输出的是2,因为b是引用类型,在只需修改b的成员的时候,加不加ref关键字都一样。引用类型本身并不包含数据,仅仅维持了对数据的引用。

因此,使用ref参数,对值类型对象的作用显而易见,而对于引用类型,如需修改引用类型内部的数据,则无需使用ref关键字;否则,当被调用函数内部需要更改引用本身时,比如在函数内部重新定位对象的引用,则需要使用ref关键字。

點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺(jué)得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評(píng)論
  • 收藏
  • 共同學(xué)習(xí),寫(xiě)下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說(shuō)多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開(kāi)微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消