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

首頁 > 編程 > C# > 正文

C#中string用法實例詳解

2020-01-24 02:30:21
字體:
來源:轉載
供稿:網友

在進行C#程序設計時,用的最多的莫過于string了,但有些時候由于不仔細或者基礎的不牢固等因素容易出錯,今天本文就來較為詳細的總結一下C#中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的別名

4.string參數傳遞

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

測試代碼如下:

static void Main(string[] args){  string strA = "abcde";  Deal(strA);  Console.WriteLine(strA);  Console.ReadLine();}static void Deal(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

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

5.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))

6.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());

相信本文所述實例對于大家牢固掌握C#的string用法能起到一定的幫助和借鑒作用。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 雷州市| 报价| 莎车县| 柳江县| 连州市| 石林| 宜黄县| 郓城县| 丁青县| 玉树县| 景洪市| 富蕴县| 罗江县| 宝兴县| 龙海市| 乌拉特前旗| 德安县| 晋城| 丹江口市| 承德县| 儋州市| 昭觉县| 雷山县| 布拖县| 镇康县| 南充市| 隆安县| 隆尧县| 米易县| 贵州省| 万荣县| 游戏| 叶城县| 兴国县| 祁连县| 桑植县| 南开区| 襄垣县| 贺兰县| 阆中市| 兴化市|