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

首頁 > 學院 > 開發設計 > 正文

C#string詳解

2019-11-17 02:57:57
字體:
來源:轉載
供稿:網友

C#string詳解

平時用的最多的莫過于string了,但有時遇到的一些問題,不仔細想還真容易出錯,今天我就來總結一下string的用法。

1.string是一個引用類型,平時我們比較string對象,比較的是對象的值而不是對象本身

如:
string strA="abcde";string strB="abc";string strC="de";Console.WriteLine(strA == (strB+strC));//trueConsole.WriteLine((object)strA == (object)(strB+strC));//false

因為字符串內容相同但引用的不是同一個實例

2.string對象是不可修改的

string strA="abcde";strA="aaaaa";

從表面上看似修改了strA的內容,事實上"abcde"沒有被修改,而是從新創建了一個對象"aaaaa",然后把該對象的引用賦給strA,最后"abcde"會被作為垃圾回收。

3.string的創建

直接賦值:string strA="abcde";//創建一個內容為abcde的string對象,然后將該對象的引用賦給strA

構造: char[] arr={'a','b','c','d','e'};

string strA=new string(arr);//這里只列舉一種

注意:沒有String str=new String("abcde");這樣的構造,string是 .NET Framework 中String的別名。

3.string參數傳遞

string是引用類型,我們試圖在一個函數里改變這個值

static void Main(string[] args){    string strA = "abcde";    Deal(ref strA);    Console.WriteLine(strA);    Console.ReadLine();}static void Deal(ref string str){    str = str.Substring(0, 2);}

結果:abcde

原因:通過值傳遞引用類型的參數時,有可能更改引用所指向的數據,如某類成員的值。但無法更改引用本身的值,通過ref關鍵字傳遞參數可解決該問題。

static void Main(string[] args){     string strA = "abcde";     Deal(strA);     Console.WriteLine(ref strA);     Console.ReadLine();}static void Deal(ref string str){     str = str.Substring(0, 2);}

結果:ab

此時傳遞的是引用本身,而不是副本

4.null 字符串和空字符串

null 字符串:沒有分配內存;空字符串分配了內存,但內存里面沒有數據.

static void Main(string[] args){    string strA = "1";    string strB = string.Empty;    string strC = null;    Console.WriteLine(int.Parse(strA));//正確    Console.WriteLine(int.Parse(strB));//輸入字符串的格式不正確    Console.WriteLine(strC.ToString());//未將對象引用設置到對象的實例。    Console.ReadLine();}

內置方法字符串是否為null或為空:IsNullOrEmpty等同于if (str == null || str.Equals(String.Empty))IsNullOrWhiteSpace等同于 if (str == null || str.Equals(String.Empty) || str.Trim().Equals(String.Empty))

5.StringBuilder

string strA="abc"for(int i=0;i<10000;i++){    strA+="abc";}Consolse.WriteLine(strA);

盡管該代碼會出現以使用字符串串聯來將新的字符追加到命名為strA 的現有字符串,它實際上會為每個串聯操作創建新的String對象。大大的降低了性能。可使用StringBuilder類代替String類多次更改字符串值,StringBuilder對象是可變的,當進行追加或刪除字符串中的子字符串時,不會創建新的對象,而是在原來的對象上進行修改。完成StringBuilder對象的值的修改后,可以調用其StringBuilder.ToString方法將其轉換為字符串

StringBuilder strA=new StringBuilder();for(int i=0;i<10000;i++){strA.Append("abc");}Consolse.WriteLine(strA.ToString());

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 新巴尔虎右旗| 七台河市| 二连浩特市| 洛宁县| 嵩明县| 罗山县| 瑞昌市| 万年县| 雷山县| 灌云县| 资溪县| 嵩明县| 平陆县| 新昌县| 饶阳县| 新绛县| 秦安县| 长乐市| 庆城县| 宜川县| 清镇市| 南岸区| 巢湖市| 卢湾区| 双柏县| 阿荣旗| 西林县| 陇南市| 肇东市| 邛崃市| 宁都县| 雷波县| 英德市| 武汉市| 新化县| 繁昌县| 扶风县| 永年县| 奉新县| 许昌市| 荆州市|