StringBuilder與String有哪些區別

2021-06-17 01:00:35 字數 1399 閱讀 4840

在相同字串的許多操作上,使用stringbuilder類會比使用string類更有效率。對於少量的字串拼接的字元操作,使用string模擬較方便。

string類和stringbuilder類都用來處理字串,它們之間有著較多相似的常規用法,並且這兩個之間可以相互轉換,這導致很多人認為這兩者基本相同。但實際不然,這兩者的內在差別是非常大的。下面對這兩個類進行詳細區分:

string類

該型別的字串型別是唯讀的,也就是說,一旦建立了某個字串物件,那麼該字串物件就不能修改。表面看來能夠修改字串的所有方法,實際上並沒有修改原有的字串,而是生成另外乙個全新的字串物件。給乙個例子幫大家理解,具體**如下:

using system;

using system.collections.generic;

using system.linq;

using system.text;

using system.threading.tasks;

namespace usestring

private static void usestring()

else

console.readline();}}

}

註明:

使用referenceequals方法比較插入前和插入後的兩個字串是否具有相同的引用。

上面**的執行結果為:

原有字串沒有被修改,而是生成新的字串

stringbuilder類

該型別表示值為可變字串行的類似字串的物件。之所以說值是可變的,是因為可以對stringbuilder物件進行追加、移除、替換或者插入字元來對其進行修改,這點與string型別恰恰相反。

大多數修改stringbuilder例項的方法都返回對同一例項的引用。由於返回的是對例項的引用,因此可以呼叫該引用的方法和屬性。如果想要編寫將連續操作依次連線起來的單個句子,這將很方便,如下面的例子所示:

using system;

using system.collections.generic;

using system.linq;

using system.text;

using system.threading.tasks;

namespace usestringbuilder

private static void usestringbuilder()

else

console.readline();}}

}

**的執行結果為:

原有字串被修改

從上面的分析可以看出,string型別和stringbuilder是不相同的,string型別的字串是唯讀的,不可修改的;而stringbuilder型別的字串是動態可修改的字串。

string與stringbuilder的區別

string 物件是不可改變的。每次使用 system.string 類中的方法之一時,都要在記憶體中建立乙個新的字串物件,這就需要為該新物件分配新的空間。stringbuilder 物件是動態物件,允許擴充它所封裝的字串中字元的數量,但是您可以為它可容納的最大字元數指定乙個值,當修改 string...

string與stringbuilder的區別

原文出處 string 物件是不可改變的。每次使用 system.string 類中的方法之一時,都要在記憶體中建立乙個新的字串物件,這就需要為該新物件分配新的空間。例如 string a a a b 每次在後面追加都會重新申請乙個能放字串的記憶體空間 string interning 字串駐留 指...

string與stringbuilder的區別

1 分析string與stringbuilder的區別,我們先來看下面一段 首先我們使用string進行字串的拼接 class program 結束計時 sw.stop console.writeline str 輸出程式執行的時間 console.writeline sw.elapsed cons...