国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

轉(zhuǎn) C#String與string的區(qū)別

2019-11-17 01:48:59
字體:
供稿:網(wǎng)友

轉(zhuǎn) C#String與string的區(qū)別

C#是區(qū)分大小寫的,但是我卻發(fā)現(xiàn)C#中同時存在String與string,于是我很困惑,于是我上網(wǎng)搜索了一下,于是我了解了一些小知識。

MSDN中對string的說明:string is an alias for String in the .NET Framework。string是String的別名而已,string是c#中的類,String是Framework的類,C# string 映射為 Framework的 String。如果用string,編譯器會把它編譯成String,所以如果直接用String就可以讓編譯器少做一點點工作。

如果使用C#,建議使用string,比較符合規(guī)范 。 string始終代表 System.String(1.x) 或 ::System.String(2.0) ,String只有在前面有using System;的時候并且當(dāng)前命名空間中沒有名為String的類型(class、struct、delegate、enum)的時候才代表System.String。

string是關(guān)鍵字,String不是,也就是說string不能作為類、結(jié)構(gòu)、枚舉、字段、變量、方法、屬性的名稱,而String可以。[C#] <wbr>String與string的區(qū)別

今天突然用到C#的string,突然想起來一直沒弄明白string和String有什么區(qū)別,查了一下電子書、MSDN以及百度和Google,更進(jìn)一步看看String的一些問題。 0. 問題: 1. C#到底是什么時候傳引用?什么時候傳值? 2. String傳值還是傳引用 3. string和String有什么區(qū)別? 4. String為什么是Immutable,怎么實現(xiàn)的? 以下查詢結(jié)果以及我的理解: 1. C#到底是什么時候傳引用?什么時候傳值? 傳值的情況?。篠truct、Enumeration、Numeric(Integral/Floating/decimal)、bool 傳引用的情況:class、Delegate、Interface 當(dāng)使用操作符"="以及函數(shù)傳參數(shù)的時候: 傳值的結(jié)果是把原對象復(fù)制了一份,接收者指向原對象。 傳引用的結(jié)果是直接讓接收者指向原對象。有人說,我硬要把值當(dāng)引用傳怎么辦?a、用ref關(guān)鍵字b、用數(shù)組,數(shù)組是classc、涼拌:) 2. String傳值還是傳引用 C#的String聲明是class String,當(dāng)然是傳引用。不過,之所以有這個疑惑,多數(shù)是因為這個情況:string a = "aaa";string b = a;b = "bbb";或者是這么幾行代碼:public void Swap(string s1, string s2){ string temp=s1; s1=s2; s2=temp;}這時候結(jié)果一打印,結(jié)果發(fā)現(xiàn)a的值還沒有變,Swap也沒有成功,這時候就會有幻覺:是不是沒有傳引用啊?呵呵,string不會這么粗暴的打亂“聲明為class就是傳引用”這種規(guī)則的。分析一下:string a = "aaa"; //==> a----->new String("aaa")string b = a; //==> b----->a, 傳引用b = "bbb"; //==> b----->new String("bbb"), 傳引用,b指向了一個新的字符串,a并沒有變。Swap函數(shù)也是這樣,比如說傳了a, b進(jìn)去(a="aaa", b="bbb"),//s1----->a, s2----->b string temp=s1;//temp----->s1----->a s1=s2; //s1----->s2----->b; s2=temp; //s2----->temp----->a結(jié)果是,s1和s2確實是Swap了,但是這種結(jié)果并不會影響到a和b3. string和String有什么區(qū)別?MSDN中對string的說明:string is an alias for String in the .NET Framework呵呵string是String的別名而已,都是一家。4. String為什么是Immutable,怎么實現(xiàn)的? immutable:對象一旦生成不可改變關(guān)于怎么實現(xiàn)的,在明白了問題2之后很好辦,只要不提供任何修改自己成員變量的方法就可以了。順便聲明為sealed,防止不清楚的后來者違反規(guī)定:)String每個看似修改了成員變量的方法,事實上都返回了一個新的String。比如String.Replace函數(shù),事實上并沒有改變原來的串,這也是為什么只有讓str = str.Replace( foo, bar)才真正完成替換的原因。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 陆河县| 武胜县| 乐亭县| 正定县| 富民县| 汪清县| 东丰县| 宝清县| 特克斯县| 额敏县| 柳河县| 乌拉特后旗| 文水县| 佛山市| 怀集县| 扎赉特旗| 靖州| 武鸣县| 都兰县| 柳州市| 通州区| 衡阳市| 卢龙县| 朔州市| 康定县| 临泽县| 呼和浩特市| 瑞安市| 乐昌市| 东乡县| 桃源县| 凌云县| 太湖县| 凤庆县| 余江县| 宣武区| 监利县| 黄山市| 沽源县| 绿春县| 凤山县|