狠狠爱成人网_日韩一级在线_国产综合自拍_亚洲精品韩国_亚洲视频导航_麻豆成人在线播放_欧美jjzz_一区在线视频观看_美脚丝袜一区二区三区在线观看_欧美91视频

當前位置:系統之家 > 技術開發教程 > 詳細頁面

理解C#中的string分類

理解C#中的string分類

更新時間:2019-05-15 文章作者:未知 信息來源:網絡 閱讀次數:

       目的

       本文的目的在于揭示和DOTNET及C#相關的一些常見的和不常見的問題。在這些問題中我的第一篇文章和string數據類型有關,string數據類型是一種引用類型,但是當和其他引用類型比較的時候,很多開發人員可能并不能完全理解它的行為。

       問題

       對于常見的引用類型,當改變一個對象別名的值時,這種變化也同樣會在一個實際的對象中表現出來;反之亦然。但是對于string類型,似乎不是這樣的。

       解釋

       引用類型

       假設我們有一個類MyType,這個類有一個屬性Name;我們還有一個類AppType,這個類提供Main()方法來運行這個程序。

       下面,我們來看看代碼:

      

using System;

class MyType

{

     private string name;

     public string Name

     {

         set

         {

              name=value;

         }

         get

         {

              return name;

         }

     }

}

class AppType

{

     public static void Main()

     {

         MyType obj1,obj2;

         Console.WriteLine("*****Learning reference Philosophy*****");

         obj2=new MyType();

         obj2.Name="Sadiq";

         obj1=obj2;

         Console.WriteLine("values of obj1={0} and obj2={1}",obj1.Name,obj2.Name);

         obj1.Name="Ahmed";

         Console.WriteLine("values of obj1={0} and obj2={1}",obj1.Name,obj2.Name);

     }

}
 

       當你編譯并且運行這段代碼時,你將得到如下輸出:

*****Learning reference philosophy*****
values of obj1=Sadiq and obj2=Sadiq
values of obj1=Ahmed and obj2=Ahmed

這表明obj1不過是obj2的別名,換句話說,obj1和obj2都指向同一個內存空間。

值類型

和上面的代碼差不多,不同的是這次我們將MyType定義為類,其他部分都相同,我們先看看代碼:

using System;

struct MyType

{

     private string name;

     public string Name

     {

         set

         {

              name=value;

         }

         get

         {

              return name;

         }

     }

}

class AppType

{

     public static void Main()

     {

         MyType obj1,obj2;

         Console.WriteLine("*****Learning reference Philosophy*****");

         obj2=new MyType();

         obj2.Name="Sadiq";

         obj1=obj2;

         Console.WriteLine("values of obj1={0} and obj2={1}",obj1.Name,obj2.Name);

         obj1.Name="Ahmed";

         Console.WriteLine("values of obj1={0} and obj2={1}",obj1.Name,obj2.Name);

     }

}
 

       我們再來看看上面代碼運行后的輸出:

*****Learning reference philosophy*****
values of obj1=Sadiq and obj2=Sadiq
values of obj1=Ahmed and obj2=Sadiq

這表明obj1和obj2并不相同,也就是說,他們指向不同的內存空間。

引用類型還是值類型?
現在,讓我們看看直接使用string類型的情況:

using System;

class AppType

{

     public static void Main()

     {

         String obj1,obj2;

         Console.WriteLine("*****Learning reference philosophy*****");

         //No need of it

         //obj2=new MyType();

         obj2="Sadiq";

         obj1=obj2;

         Console. WriteLine("values of obj1={0} and obj2={1}",obj1,obj2);

         obj1="Ahmed";

         Console.WriteLine("values of obj1={0} and obj2={1}",obj1,obj2);

     }

}
 

當你運行這段代碼,你會得到:

*****Learning reference philosophy*****
values of obj1=Sadiq and obj2=Sadiq
values of obj1=Ahmed and obj2=Sadiq

這表明obj1并不是obj2的別名,即obj1和obj2指向不同的內存空間。

非常奇怪!確實!我們都知道string類型是動態增長的,這表明它必須在堆上分配內存。我們都知道引用類型都在堆上分配內存,那么string類型也應該是引用類型,那么為何它又表現出和值類型一樣的性質呢?

原因
關鍵在于如下的兩行代碼中:

string obj1;
obj1 = “value forces to allocate a memory”;

第一行代碼僅僅是定義了一個對象,并不會創建一個對象;第二行代碼才會真正創建一個對象。這意味著你也可以將第二行代碼寫成:

obj=new string(“value forces to allocate a memory”);.

總結

因此,當你初始化一個string對象的值或是賦予一個新的字符串給它的時候都將在內存中創建一個新的對象。現在,我們應該明白了第三個例子中的obj1并不是obj2的別名,他們指向不同的內存空間。

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

狠狠爱成人网_日韩一级在线_国产综合自拍_亚洲精品韩国_亚洲视频导航_麻豆成人在线播放_欧美jjzz_一区在线视频观看_美脚丝袜一区二区三区在线观看_欧美91视频
亚洲精品一区二区三区香蕉| 日韩精品一区二区三区四区视频| 91丨porny丨最新| 风间由美一区二区av101| 国产综合久久久久影院| 国产一区二区三区久久久 | 欧美+日本+国产+在线a∨观看| 成人动漫av在线| 亚洲精品资源| 在线视频国产一区| 91精品国产一区二区三区香蕉| 欧美一卡在线观看| 中文字幕一区二区三区不卡在线| 欧美韩国一区二区| 午夜欧美大尺度福利影院在线看| 五月激情六月综合| 亚洲成人黄色影院| 欧美日韩视频在线一区二区观看视频 | 卡一卡二国产精品| 午夜亚洲精品| 国产精品成人免费在线| 成人免费视频app| 欧美日韩中文精品| 日韩va欧美va亚洲va久久| 亚洲美女网站| 综合激情成人伊人| 91蝌蚪porny成人天涯| 91.xcao| 国产一区在线观看麻豆| 国产亚洲综合精品| 国产精品亲子伦对白| 久久国产麻豆精品| 老鸭窝毛片一区二区三区| 欧美高清在线一区二区| 国产一区二区三区精品欧美日韩一区二区三区| 欧美黄色aaaa| 精品av久久707| 韩国av一区二区三区在线观看| 国产欧美亚洲日本| 亚洲欧美成aⅴ人在线观看| 成人av免费在线观看| 91黄色小视频| 国产欧美日韩一区| 欧美性猛交xxxx乱大交退制版| 精品免费国产一区二区三区四区| 麻豆成人久久精品二区三区红 | 久久久精品日韩| 午夜精品国产更新| 久久精品首页| 日韩电影网1区2区| 欧美日韩一区在线| 国产精品1区2区| 欧美va在线播放| 欧美激情第六页| 亚洲精品日日夜夜| 国产日韩亚洲欧美精品| 亚洲一区成人在线| 老司机午夜免费精品视频| 视频一区免费在线观看| 91黄色免费版| 成人影视亚洲图片在线| 久久先锋资源网| 伊人久久久大香线蕉综合直播| 一色屋精品亚洲香蕉网站| 亚洲精品久久久久久一区二区| 亚洲香蕉伊在人在线观| 色婷婷久久久久swag精品| 国产成人精品一区二| 国产亚洲一本大道中文在线| 国产精品久久久一区二区| 偷拍一区二区三区四区| 欧美sm极限捆绑bd| 有坂深雪av一区二区精品| 男女av一区三区二区色多| 99国产精品一区| 免费视频最近日韩| 亚洲超碰精品一区二区| 国产精品麻豆99久久久久久| 欧美一区三区四区| 在线观看免费亚洲| 狠狠色综合色区| 国产成人免费在线观看| 看电影不卡的网站| 亚洲图片有声小说| 国产精品久久久久久妇女6080| 欧美日韩国产精品成人| 久久婷婷影院| 免费久久99精品国产自在现线| 99riav久久精品riav| 国产一区二区三区四| 日韩精品乱码免费| 亚洲国产视频一区| 自拍偷拍亚洲激情| 综合婷婷亚洲小说| 一区在线中文字幕| 久久久久亚洲综合| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 国产尤物一区二区| 国产在线精品一区二区不卡了| 蜜臀a∨国产成人精品| 日韩中文字幕麻豆| 蜜臀av性久久久久av蜜臀妖精| 日日欢夜夜爽一区| 久久69国产一区二区蜜臀| 国产精品综合av一区二区国产馆| 欧美bbbbb| 国产精品99久久久久久似苏梦涵| 美女网站色91| 91小视频免费看| 亚洲尤物影院| 日韩视频永久免费| 国产精品白丝在线| 日本不卡中文字幕| 欧美视频福利| 国内一区二区在线视频观看| 欧美三区在线观看| 欧美一区国产二区| 成人免费视频在线观看| 日本网站在线观看一区二区三区| 国产风韵犹存在线视精品| 午夜精品亚洲一区二区三区嫩草| 亚洲综合二区| 精品国免费一区二区三区| 亚洲国产精品久久人人爱| 蜜臀av性久久久久蜜臀aⅴ流畅 | 精品免费国产一区二区三区四区| 欧美精品一区二区三区视频| 国产精品66部| 欧美99在线视频观看| 欧美主播一区二区三区美女| 欧美国产精品专区| 国产精品99久久久久久似苏梦涵| 亚洲毛片视频| 久久综合中文字幕| 国产乱人伦精品一区二区在线观看| 一区福利视频| 久久精品视频免费观看| 国产成人综合亚洲91猫咪| 国产精品日韩久久久| 国产精品美女久久久久av爽李琼 | 91成人免费在线| 青娱乐精品视频在线| 国产欧美日韩另类一区| 4hu四虎永久在线影院成人| 99在线|亚洲一区二区| 国内激情久久| 国内外成人免费视频| 欧美freesex交免费视频| 欧美日韩综合另类| 亚洲免费影视| 欧美裸体一区二区三区| 日韩免费成人网| 26uuu国产电影一区二区| 国产精品区一区二区三区| 中文字幕在线免费不卡| 国产精品久久免费看| 无码av免费一区二区三区试看| 亚洲图片另类小说| 久久国产三级精品| 粉嫩在线一区二区三区视频| 丁香婷婷综合网| 欧美在线日韩| 国产精品外国| 制服丝袜在线91| 国产精品日韩成人| 蜜桃一区二区三区四区| 国模大尺度一区二区三区| 午夜久久资源| 老**午夜毛片一区二区三区| 欧美色图天堂网| 一区二区三区免费| 久草精品在线观看| 亚洲国产成人不卡| 欧美色综合网站| 中文字幕在线一区免费| 久久99久久99小草精品免视看| 国产精品草草| 7777女厕盗摄久久久| 国产精品你懂的| 亚洲综合偷拍欧美一区色| 处破女av一区二区| 久久性色av| 中文无字幕一区二区三区| 六月婷婷色综合| 亚洲精品乱码视频| 国产日韩亚洲欧美综合| 九色综合狠狠综合久久| 先锋影音久久| 国产精品久久久久婷婷| 麻豆成人av在线| 91亚洲精品久久久蜜桃网站| 亚洲国产激情| 色欧美乱欧美15图片| 日韩欧美在线一区二区三区| 国产精品天干天干在观线| 国产日韩高清在线| 亚洲国产成人自拍| 日韩专区在线视频| 日本不卡视频在线观看| 国产福利91精品|