最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#中string用法實例詳解

 更新時間:2014年08月20日 10:32:40   投稿:shichen2014  
這篇文章主要介紹了C#中string用法,非常詳細的總結了比較常見的關于C#中string的幾個常用方法,需要的朋友可以參考下

在進行C#程序設計時,用的最多的莫過于string了,但有些時候由于不仔細或者基礎的不牢固等因素容易出錯,今天本文就來較為詳細的總結一下C#中string的用法。具體如下:

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

如下面代碼所示:

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

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

2.string對象是不可修改的

如下代碼所示:

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

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

3.string的創(chuàng)建

直接賦值:

string strA="abcde";//創(chuàng)建一個內容為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參數(shù)傳遞

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

測試代碼如下:

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

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

修正后的代碼如下:

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 字符串:沒有分配內存;空字符串分配了內存,但內存里面沒有數(shù)據(jù).

測試代碼如下:

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

現(xiàn)看如下測試代碼:

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

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

修改后的測試代碼如下:

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

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

相關文章

最新評論

永顺县| 陇西县| 逊克县| 上高县| 邓州市| 综艺| 礼泉县| 象州县| 岳普湖县| 棋牌| 巴林右旗| 平舆县| 阿巴嘎旗| 正镶白旗| 洛宁县| 巴楚县| 高平市| 霍林郭勒市| 平谷区| 佛教| 胶南市| 英德市| 新巴尔虎右旗| 台北市| 区。| 巴林左旗| 河曲县| 奎屯市| 房产| 日喀则市| 扎兰屯市| 澜沧| 滨州市| 无极县| 武胜县| 内丘县| 雅江县| 阿拉尔市| 隆子县| 渭源县| 徐州市|