999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

C#語言中數組與字符串存儲、使用方式異同的比較

2019-12-13 07:22:50吳昊李曉會
數字技術與應用 2019年9期

吳昊 李曉會

摘要:C#語言中,數組和字符串在使用方面既有相似之處,又有明顯差異。掌握兩者的異同,對于深入理解C#語言語法以及使用C#進行軟件開發,保證開發順利進行都有重要意義。在教學過程中,對兩者異同的比較剖析,能夠使學生更好地了解和掌握C#語言,進一步使用C#語言進行程序設計和軟件開發。

關鍵詞:C#;數組;字符串;存儲方式

中圖分類號:TP311.1 文獻標識碼:A 文章編號:1007-9416(2019)09-0148-01

C#語言是微軟公司在其開發的.NET平臺上主推的一種面向對象的程序設計語言,是計算機科學與技術等專業的一門重要課程。C#語言包含一套完整的語法、句法結構體系。而數組(Array)和字符串(String)作為C#語言中兩種重要的數據類型(數據結構),其定義、存儲和使用有很多特殊性。

在以往的教學中發現,當學生不能準確理解數組和字符串在存儲、使用方式上的差異時,對后續學習,例如將數組作為方法的參數,會有很大的影響。

針對以上問題,本文旨在通過對比來剖析C#語言中,數組和字符串的相同點和不同點,幫助學生準確掌握兩者的使用。

1 C#語言中數組與字符串屬于引用數據類型

在C#語言的語法體系中,數組與字符串都屬于和值類型相對應的引用數據類型,這是兩者的相同之處。引用類型與值類型,在定義、存儲和使用方式上有很多的不同之處。

1.1 代碼舉例----值類型與引用類型

為了比較以數組為代表的引用類型與值類型的區別,分析如下程序代碼:

int m=5,n;

n=m;

m=-2;

Console.Write(n);

這段代碼首先定義兩個int類型變量m和n。m的初始值為5。將變量m的值賦給n,再將m的值修改為-2。此時,變量m的值為-2,而n的值為5。

作為對比,再來看下面的代碼段。

int[] arr1 = { 1, 2, 3 }, arr2;

arr2 = arr1;arr1[0] = -10;

Console.Write(arr2[0]);

這段代碼首先定義兩個int類型數組變量arr1和arr2。arr1的初始值為{1,2,3}。將變量arr1的值賦給arr2,再將arr1的第一個元素(序號為0)值修改為-10。此時,arr1的第一個元素的值為-10,而arr2的第一個元素的值也會變為-10。

1.2 案例分析

對于兩個值類型變量的直接賦值(如上面第一段代碼中的語句n=m;),是在兩塊不同的棧內存之間完成數值的復制。因此當修改其中一個值類型變量值的時候,對另外一個不會產生影響。

于兩個引用類型變量的直接賦值(如上面第二段代碼中的語句arr2 = arr1;),是在棧內存之間完成用引用(該引用的值是保存在堆內存上的數值部分的首地址)部分的復制。復制的結果使得兩個數組變量名的引用部分是相同,即都指向同一塊保存在堆內存上的數值部分的首地址。因此當使用數組名稱修改堆內存上的數值時,對另一個數組引用會產生影響。

2 字符串與數組引用方式不同

雖然字符串與數組一樣,也屬于引用數據類型。但字符串在使用時,與數組有所不同。

2.1 代碼舉例----字符串與數組賦值操作的比較

分析下面一段代碼:

string s1 = "abc",s2;

s2 = s1;

s1 = "def";

Console.Write(s2);

這段代碼首先定義兩個字符串類型變量s1和s2。s1的初始值為"abc"。將變量s1的值賦給s2,再將s1的值修改為"def"。此時s2的值應該是什么呢?按照上述1.2節的分析,同樣作為引用類型的字符串,應該按照和數組操作相似的方式,s1和s2引用的地址相同,s1的值改變,s2的值也會發生相同改變。然而,事實并非如此。程序的實際運行結果如圖1所示。

2.2 案例分析

字符串作為一種常用的引用類型,也是非常特殊的引用類型。正如微軟MSDN中關于字符串說明所提到的,字符串(String)的值是“不可更改的”。即當修改一個字符串變量的值的時候,并不是將原來保存在堆內存上的值改變,而是另外開辟一塊新的堆內存保存新值,并將字符串變量在棧內存上的地址引用修改為新的堆內存的地址。因此案例代碼中變量s1指向新的堆內存中的新值,而s2仍然指向原堆內存中的原值。

3 結語

C#語言中,數組和字符串都屬于引用數據類型,其存儲方式有相同之處,即都在棧內存上存儲引用(地址),在堆內存上存儲數據;但由于數組的值允許更改,而字符串的值不允許修改,因此在對應類型變量賦值過程中,實際的運行方式不盡相同。而對于字符串而言,如果需要在原堆內存上直接修改數據,可以使用另一個描述字符串的類----StringBuffer來實現。

參考文獻

[1] 吳昊,等.C# Windows程序設計及應用[M].北京:清華大學出版社,2012.

[2] 侯鵬.C#中的字符串[J].電子世界,2014(16):86.

[3] 段春筍,杜立新.C#中動態數組設計原理[J].電腦編程技巧與維護,2005(07):24-25.

Abstract:In C# language, Arrays and strings have similarities,but obvious differences . It is significant that to understand the basic C# grammar and program by grasping the similarities and differences of arrays and strings.Duruing the teaching,it can help students master C# language deeply and use it to create application with the comparison of them.

Key words:C#;array;string;storage method

主站蜘蛛池模板: 色老头综合网| 亚洲第一视频免费在线| 欧美日韩亚洲综合在线观看| 在线观看91香蕉国产免费| 99久久精品国产麻豆婷婷| 91区国产福利在线观看午夜| 亚洲第一香蕉视频| 欧美亚洲欧美区| 亚洲日韩Av中文字幕无码| 天天色天天综合网| 高清无码手机在线观看| 欧亚日韩Av| 亚洲欧洲日韩综合色天使| 午夜视频www| 亚洲av色吊丝无码| 日韩国产无码一区| 五月激激激综合网色播免费| 国产精品免费电影| 亚洲九九视频| 亚洲人成日本在线观看| 二级毛片免费观看全程| 色老二精品视频在线观看| 国产极品美女在线观看| 日韩人妻少妇一区二区| 久久久久国色AV免费观看性色| 亚洲男人的天堂网| 国产91丝袜在线播放动漫 | 在线中文字幕网| 超碰aⅴ人人做人人爽欧美 | 18禁黄无遮挡网站| 精品综合久久久久久97超人该| 亚洲欧美另类中文字幕| 高潮爽到爆的喷水女主播视频 | 亚洲天堂视频网站| 91福利免费| 日韩精品高清自在线| 国产经典免费播放视频| 在线中文字幕日韩| 亚洲国产欧美国产综合久久 | 性欧美在线| 免费一级α片在线观看| 91在线丝袜| 午夜福利在线观看入口| 91无码人妻精品一区二区蜜桃| 亚洲精品手机在线| 国产久操视频| 久草视频中文| 日韩av资源在线| 亚洲精品国产综合99| 毛片一区二区在线看| 国产网站免费观看| 伊伊人成亚洲综合人网7777| 久久精品娱乐亚洲领先| 1024国产在线| 日本一区二区三区精品国产| 欧美午夜久久| 国产精品9| 国产在线专区| 91亚瑟视频| 99久久国产综合精品女同| 多人乱p欧美在线观看| 国产交换配偶在线视频| 精品久久香蕉国产线看观看gif| 成人在线观看不卡| 中文字幕2区| 国产在线观看精品| 91精品国产综合久久不国产大片| 91人妻日韩人妻无码专区精品| 亚洲一区二区三区国产精华液| 国产黄色片在线看| 萌白酱国产一区二区| av在线无码浏览| 青草91视频免费观看| 亚洲久悠悠色悠在线播放| 色综合久久88色综合天天提莫| 女人18毛片水真多国产| 亚洲精品欧美重口| 亚洲日韩精品综合在线一区二区| 毛片在线看网站| 99久久精品久久久久久婷婷| 91丝袜乱伦| 理论片一区|