欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#中string用法實(shí)例詳解

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

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

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

如下面代碼所示:

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

因?yàn)樽址畠?nèi)容相同但引用的不是同一個(gè)實(shí)例

2.string對象是不可修改的

如下代碼所示:

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

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

3.string的創(chuàng)建

直接賦值:

string strA="abcde";//創(chuàng)建一個(gè)內(nèi)容為abcde的string對象,然后將該對象的引用賦給strA

構(gòu)造:

char[] arr={'a','b','c','d','e'};
string strA=new string(arr);//這里只列舉一種

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

4.string參數(shù)傳遞

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

測試代碼如下:

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);
}

運(yùn)行結(jié)果:abcde

原因是通過值傳遞引用類型的參數(shù)時(shí),有可能更改引用所指向的數(shù)據(jù),如某類成員的值。但無法更改引用本身的值,通過ref關(guān)鍵字傳遞參數(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);
}

結(jié)果:ab

此時(shí)傳遞的是引用本身,而不是副本

5.null 字符串和空字符串

null 字符串:沒有分配內(nèi)存;空字符串分配了內(nèi)存,但內(nèi)存里面沒有數(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());//未將對象引用設(shè)置到對象的實(shí)例。
  Console.ReadLine();
}

內(nèi)置方法字符串是否為 null 或?yàn)榭眨?/p>

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)有字符串,它實(shí)際上會為每個(gè)串聯(lián)操作創(chuàng)建新的 String 對象。大大的降低了性能??墒褂?StringBuilder 類代替String 類多次更改字符串值,StringBuilder 對象是可變的,當(dāng)進(jìn)行追加或刪除字符串中的子字符串時(shí),不會創(chuàng)建新的對象,而是在原來的對象上進(jìn)行修改。 完成 StringBuilder 對象的值的修改后,可以調(diào)用其 StringBuilder.ToString 方法將其轉(zhuǎn)換為字符串

修改后的測試代碼如下:

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

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

相關(guān)文章

  • 基于C#實(shí)現(xiàn)在圖片上繪制文字

    基于C#實(shí)現(xiàn)在圖片上繪制文字

    這篇文章主要為大家詳細(xì)介紹了如何利用C#實(shí)現(xiàn)在圖片上繪制文字的效果,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)C#有一定的幫助,感興趣的小伙伴可以跟隨小編一起了解一下
    2022-12-12
  • C# 復(fù)制指定節(jié)點(diǎn)的所有子孫節(jié)點(diǎn)到新建的節(jié)點(diǎn)下

    C# 復(fù)制指定節(jié)點(diǎn)的所有子孫節(jié)點(diǎn)到新建的節(jié)點(diǎn)下

    這篇文章主要介紹了C# 復(fù)制指定節(jié)點(diǎn)的所有子孫節(jié)點(diǎn)到新建的節(jié)點(diǎn)下的相關(guān)資料,非常不錯(cuò)具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2016-10-10
  • 一句話清晰總結(jié)C#的協(xié)變和逆變

    一句話清晰總結(jié)C#的協(xié)變和逆變

    這篇文章介紹了C#協(xié)變和逆變的工作原理,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-10-10
  • 使用C# CefSharp Python采集某網(wǎng)站簡歷并且自動(dòng)發(fā)送邀請短信的方法

    使用C# CefSharp Python采集某網(wǎng)站簡歷并且自動(dòng)發(fā)送邀請短信的方法

    這篇文章主要給大家介紹了關(guān)于如何使用C# CefSharp Python采集某網(wǎng)站簡歷并且自動(dòng)發(fā)送邀請短信的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧
    2019-03-03
  • C# 使用CancellationTokenSource取消多線程

    C# 使用CancellationTokenSource取消多線程

    有時(shí)間我們在使用多線程的時(shí)候,需要取消線程的執(zhí)行,可以使用CancellationTokenSource來取消對Task開辟多線程的取消,感興趣的可以了解一下
    2021-08-08
  • c# base64轉(zhuǎn)字符串實(shí)例

    c# base64轉(zhuǎn)字符串實(shí)例

    這篇文章主要介紹了c# base64轉(zhuǎn)字符串實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • c#制作類似qq安裝程序一樣的單文件程序安裝包

    c#制作類似qq安裝程序一樣的單文件程序安裝包

    c#制作單文件安裝程序,可安裝windows服務(wù),類似安裝QQ,大家參考使用吧
    2014-01-01
  • C#中using語句的用法

    C#中using語句的用法

    這篇文章介紹了C#中using語句的用法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-03-03
  • 淺談C#中對引用類型的誤解

    淺談C#中對引用類型的誤解

    這篇文章主要介紹了淺談C#中對引用類型的誤解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • C#如何給PDF文件添加水印

    C#如何給PDF文件添加水印

    這篇文章主要為大家詳細(xì)介紹了C#如何給PDF文件添加水印的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-09-09

最新評論