• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

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

    2019-12-13 07:22:50吳昊李曉會
    關(guān)鍵詞:字符串數(shù)組

    吳昊 李曉會

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

    關(guān)鍵詞:C#;數(shù)組;字符串;存儲方式

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

    C#語言是微軟公司在其開發(fā)的.NET平臺上主推的一種面向?qū)ο蟮某绦蛟O(shè)計(jì)語言,是計(jì)算機(jī)科學(xué)與技術(shù)等專業(yè)的一門重要課程。C#語言包含一套完整的語法、句法結(jié)構(gòu)體系。而數(shù)組(Array)和字符串(String)作為C#語言中兩種重要的數(shù)據(jù)類型(數(shù)據(jù)結(jié)構(gòu)),其定義、存儲和使用有很多特殊性。

    在以往的教學(xué)中發(fā)現(xiàn),當(dāng)學(xué)生不能準(zhǔn)確理解數(shù)組和字符串在存儲、使用方式上的差異時(shí),對后續(xù)學(xué)習(xí),例如將數(shù)組作為方法的參數(shù),會有很大的影響。

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

    1 C#語言中數(shù)組與字符串屬于引用數(shù)據(jù)類型

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

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

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

    int m=5,n;

    n=m;

    m=-2;

    Console.Write(n);

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

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

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

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

    Console.Write(arr2[0]);

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

    1.2 案例分析

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

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

    2 字符串與數(shù)組引用方式不同

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

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

    分析下面一段代碼:

    string s1 = "abc",s2;

    s2 = s1;

    s1 = "def";

    Console.Write(s2);

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

    2.2 案例分析

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

    3 結(jié)語

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

    參考文獻(xiàn)

    [1] 吳昊,等.C# Windows程序設(shè)計(jì)及應(yīng)用[M].北京:清華大學(xué)出版社,2012.

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

    [3] 段春筍,杜立新.C#中動態(tài)數(shù)組設(shè)計(jì)原理[J].電腦編程技巧與維護(hù),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

    猜你喜歡
    字符串數(shù)組
    JAVA稀疏矩陣算法
    基于文本挖掘的語詞典研究
    JAVA玩轉(zhuǎn)數(shù)學(xué)之二維數(shù)組排序
    辨析指針數(shù)組與數(shù)組指針
    Excel數(shù)組公式在林業(yè)多條件求和中的應(yīng)用
    尋找勾股數(shù)組的歷程
    一種新的基于對稱性的字符串相似性處理算法
    高效的top-k相似字符串查詢算法
    依據(jù)字符串匹配的中文分詞模型研究
    VB數(shù)組在for循環(huán)中的應(yīng)用
    考試周刊(2012年88期)2012-04-29 04:36:47
    修武县| 昌平区| 亚东县| 钟祥市| 顺平县| 泗阳县| 宜章县| 蓬安县| 南通市| 永德县| 开鲁县| 邵阳市| 闵行区| 宁津县| 府谷县| 阿瓦提县| 荔浦县| 合阳县| 崇礼县| 泽州县| 中江县| 融水| 徐水县| 汾阳市| 元朗区| 乳源| 合肥市| 双鸭山市| 湖北省| 堆龙德庆县| 浙江省| 漳州市| 建水县| 中宁县| 额济纳旗| 夏邑县| 门头沟区| 安福县| 时尚| 偃师市| 濮阳市|