String 類

表示文本,即一系列 Unicode 字符。算法

命名空間:System
程序集:mscorlib(在 mscorlib.dll 中) 數組

語法

C# 安全

[SerializableAttribute]
[ComVisibleAttribute(true)]
public sealed class String : IComparable, ICloneable, IConvertible,
IComparable<string>, IEnumerable<string>, IEnumerable,
IEquatable<string>多線程

備註

字符串是 Unicode 字符的有序集合,用於表示文本。String 對象是 System.Char 對象的有序集合,用於表示字符串。String 對象的值是該有序集合的內容,而且該值是不可變的。 oop

String 對象稱爲不可變的(只讀),由於一旦建立了該對象,就不能修改該對象的值。看來彷佛修改了 String 對象的方法其實是返回一個包含修改內容的新 String 對象。若是須要修改字符串對象的實際內容,請使用 System.Text.StringBuilder 類。 測試

字符串中的每一個 Unicode 字符都是由 Unicode 標量值定義的,Unicode 標量值也稱爲 Unicode 碼位或者 Unicode 字符的序號(數字)值。每一個碼位都是使用 UTF-16 編碼進行編碼的,編碼的每一個元素的數值都用一個 Char 對象表示。 ui

一個 Char 對象一般表示一個碼位,即:Char 的數值等於該碼位。可是,一個碼位可能須要多個編碼元素。例如,Unicode 輔助碼位(代理項對)使用兩個 Char 對象來編碼。 編碼

序號運算和區分區域性的運算

String 類的成員對 String 對象執行序號運算或語義運算。序號運算是對每一個 Char 對象的數值執行的。語義運算則對考慮了特定於區域性的大小寫、排序、格式化和語法分析規則的 String 的值執行。語義運算在顯式聲明的區域性或者隱式當前區域性的上下文中執行。有關當前區域性的更多信息,請參見 CultureInfo.CurrentCulture 主題。 線程

大小寫規則決定如何更改 Unicode 字符的大小寫,例如,從小寫變爲大寫。 代理

格式化規則決定如何將值轉換爲它的字符串表示形式,而語法分析規則則肯定如何將字符串表示形式轉換爲值。

排序規則肯定 Unicode 字符的字母順序,以及兩個字符串如何互相比較。例如,Compare 方法執行語義比較,而 CompareOrdinal 方法執行序號比較。所以,若是當前的區域性爲美國英語,則 Compare 方法認爲「a」小於「A」,而 CompareOrdinal 方法會認爲「a」大於「A」。

.NET Framework 支持單詞、字符串和序號排序規則。單詞排序會執行區分區域性的字符串比較,在這種比較中,某些非字母數字 Unicode 字符可能會具備特殊的權重。例如,連字符(「-」)的權重很是小,所以「coop」和「co-op」在排序列表中是緊挨着出現的。字符串排序與單詞排序類似,只是全部非字母數字符號均排在全部字母數字 Unicode 字符前面,沒有特例。

區分區域性的比較是顯式或隱式使用 CultureInfo 對象的任何比較,包括由 CultureInfo.InvariantCulture 屬性指定的固定區域性。當前隱式區域性由 Thread.CurrentCulture 屬性指定。

序號排序基於字符串中每一個 Char 對象的數值對字符串進行比較。序號比較自動區分大小寫,由於字符的小寫和大寫版本有着不一樣的碼位。可是,若是大小寫在應用程序中並不重要,則能夠指定忽略大小寫的序號比較。這至關於使用固定區域性將字符串轉換爲大寫,而後對結果執行序號比較。

有關單詞、字符串和序號排序規則的更多信息,請參見 System.Globalization.CompareOptions 主題。

區分區域性的比較一般適用於排序,而序號比較則不適合。序號比較一般適用於肯定兩個字符串是否相等(即,肯定標識),而區分區域性的比較則不適用。

比較和搜索方法的「備註」指定方法是區分大小寫、區分區域性仍是二者區分。根據定義,任何字符串(包括空字符串 (""))的比較結果都大於空引用兩個空引用的比較結果爲相等。

規範化

某些 Unicode 字符具備多個等效的二進制表示形式,這些表示形式中包含幾組組合的和/或複合的 Unicode 字符。Unicode 標準定義了一個稱爲規範化的過程,此過程將一個字符的任何一種等價二進制表示形式轉換爲統一的二進制表示形式。可以使用多種遵循不一樣規則的算法執行規範化,這些算法也稱爲範式。.NET Framework 當前支持範式 C、D、KC 和 KD。一般用序號比較來評估一對規範化的字符串。

安全注意事項

若是應用程序進行有關符號標識符(如文件名或命名管道)或持久數據(如 XML 文件中基於文本的數據)的安全決策,則該操做應該使用序號比較而不是區分區域性的比較。這是由於根據起做用的區域性的不一樣,區分區域性的比較可產生不一樣的結果,而序號比較則僅依賴於所比較字符的二進制值。

功能

String 類提供的成員執行如下操做:比較 String 對象;返回 String 對象內字符或字符串的索引;複製 String 對象的值;分隔字符串或組合字符串;修改字符串的值;將數字、日期和時間或枚舉值的格式設置爲字符串;對字符串進行規範化。

實現的接口

String 類分別用於實現 IComparableICloneableIConvertibleIEnumerableIComparable 接口。使用 Convert 類進行轉換,而不是使用此類型的 IConvertible 顯式接口成員實現。

繼承層次結構

System.Object
System.String

線程安全

該類型對於多線程操做是安全的。(?是由於每次賦值都是建立一個新的引用嗎?)

相關文章
相關標籤/搜索