成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

再聊一次值類型和引用類型

開發 后端
C#值類型,作為函數形參,形參被修改,不影響原值。這是我們在初始學習編程時需要記住的內容,我們也是一直這樣踐行的。

[[419862]]

C#值類型,作為函數形參,形參被修改,不影響原值。

這是我們在初始學習編程時需要記住的內容,我們也是一直這樣踐行的。

先說結論:這是不準確的。

為什么提出這樣看似很淺顯的問題,是因為有次我在使用ArraySegment值類型時,有感而發。

這是一個托管的值類型,表示array的一個片斷, 在用做websocket接收數據的載體時我發現每次值傳遞后, 這個ArraySegment貌似發生了變化。這勾起了我的探究欲。

我們做一個簡單的實驗, 來證明【值類型作為函數形參, 形參被修改,不影響原值】不準確。

  1. struct Slice  
  2.     { 
  3.           public Array Array { get; set; } 
  4.           public int Offset { get; set; } 
  5.           public int Count { get; set; } 
  6.     } 
  7.  
  8.     class Program 
  9.     { 
  10.         static void Main(string[] args) 
  11.         { 
  12.             var slice = new Slice { Array = Array.CreateInstance(typeof(int), 5)}; 
  13.             Test(slice); 
  14.  
  15.             foreach(var i  in slice.Array) 
  16.             { 
  17.                 Console.WriteLine(i);  
  18.             } 
  19.             Console.ReadLine(); 
  20.         } 
  21.   // 值類型傳參,值傳給tmp變量 
  22.         static void Test(Slice tmp) 
  23.         { 
  24.             tmp.Array.SetValue(1,1); 
  25.             tmp.Offset = 1; 
  26.             tmp.Count = 1; 
  27.         } 
  28.     } 
  29.      
  30.  // 輸出  0 1 0 0 0 

slice變量的引用類型屬性體現了變化,值類型Offset Count屬性不會變化。

這個簡單的Demo告訴我們:

大部分情況下:“值類型作為函數形參,形參被修改,不影響原值”, 但是如果修改的是值類型的引用類型字段,原值類型照樣能體現修改。

歸根到底由值類型和引用類型的特性決定:

值類型的變量直接存儲數據,而引用類型的變量持有的是數據的引用,數據存儲在數據堆中; 

寬泛地講:函數傳參,都是值傳遞(拷貝), 只是引用類型傳遞的是原對象的引用或地址值。

 

責任編輯:武曉燕 來源: 精益碼農
相關推薦

2009-10-10 09:53:07

.NET值類型

2009-08-19 16:39:44

C#值類型C#引用類型

2009-08-26 14:05:19

C#值類型和引用類型

2011-06-08 13:03:52

C#值類型引用類型

2009-10-22 18:41:49

CLR VIA C#教

2009-08-31 14:34:46

C#值類型C#結構類型

2013-05-23 17:21:16

C#

2016-08-18 14:13:55

JavaScript基本數據引用數據

2017-02-27 08:34:09

JavaScript數據引用

2011-07-11 14:36:05

JAVA

2024-05-20 08:58:13

Java引用類型垃圾回收器

2009-08-27 16:39:26

C# String類型

2009-08-14 17:09:48

C#引用類型

2021-10-14 10:25:05

JavaScript類型函數

2022-04-17 10:29:10

TSTypeScript對象類型

2021-05-30 07:59:00

String引用類型

2011-06-28 10:41:50

DBA

2009-09-11 11:09:36

C#引用類型

2009-06-08 18:05:00

Java進階引用

2009-08-03 17:51:43

C#引用類型
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91欧美激情一区二区三区成人 | 欧美日韩高清 | 一区二区三区四区在线视频 | 久久最新精品 | 亚洲成av | 国产高清久久 | 久久69精品久久久久久国产越南 | 亚洲色图插插插 | 黄色网址在线免费观看 | 久久久久国色av免费观看性色 | 国产精品美女久久久久aⅴ国产馆 | 国产亚洲精品a | 日韩欧美在线观看 | 亚洲精品一区二区三区中文字幕 | 成人在线精品 | 狠狠艹 | 精品av天堂毛片久久久借种 | 亚洲精品在线视频 | 日韩在线不卡视频 | 中文字幕一区二区三区日韩精品 | 欧美男人天堂 | 日韩精品免费在线观看 | 国产精品视频观看 | 欧洲成人午夜免费大片 | 欧美激情国产精品 | 天天插天天搞 | 成人欧美一区二区三区黑人孕妇 | 91成人影院 | 拍拍无遮挡人做人爱视频免费观看 | 一区二区亚洲 | 精品国产乱码久久久久久丨区2区 | 91精品久久久 | 亚洲精品粉嫩美女一区 | 搞av.com | 999国产视频 | 久久99精品久久 | 日日操视频 | 一区二区中文字幕 | 91精品一区二区三区久久久久 | 成人在线视频免费播放 | 一级黄a视频 |