---------------------- asp.net+android+ios開發、.net培訓、期待與您交流! ----------------------
字串是 string 型別的物件,它的值是文字。在內部,這些文字儲存為char 物件的唯讀集合,其中每個物件都表示乙個以 utf-16 編碼的 unicode 字元。c# 字串末尾沒有以 null 結尾的字元(這一點與 c 和 c++ 不同),因此 c# 字串可以包含任意數目的嵌入式 null 字元(「\0」)。字串長度表示字元數目,無論這些字元是否是由 unicode **項對形成的。若要訪問字串中的各個 unicode 碼位,請使用 stringinfo 物件。
在 c# 中,string
關鍵字是string 的別名。因此,string與string
等效,您可以根據自己的喜好選擇命名約定。string類提供了很多用於安全地建立、操作和比較字串的方法。
c#中字串是引用型別,string型別存放在堆上,而不是堆疊上。因此把乙個字串賦值給另乙個字串時,會得到對同乙個字串的兩個引用。但我們看下下面問題。
通過上例可以看到,當我們改變p2的值時p1的值並沒有改變。這個和我們學到的引用豈不是相反。
當我們開始分配字串時將在堆上開闢乙個空間"i love you!",並將這個空間的位址給予p1,當為p2賦值時將同乙個空間的位址賦給p2,所以指向同乙個變數,而當我們改變p2的值時,是現在堆上開闢個空間存放"i **** you!"然後將這個空間的位址賦值給p2,這時p1的值並未改變。所以我們看到如上的結果。
另外當我們這樣賦值時:
由以上例子的結果我們可以看出上面的兩個例子所引用的是同乙個空間。其實clr使用了一種叫字串駐留的技術,對於p1=「i love you!」和p2=「i love you!」,當clr初始化時,會建立乙個內部的雜湊表,其中的鍵為字串,值為指向託管堆中字串的引用。剛開始,雜湊表為空,jit編譯器編譯方法時,會在雜湊表中查詢每乙個文字常量字串,首先會查詢"i love you!"字串,並且因為沒有找到,編譯器會在託管堆中構造乙個新的指向"i love you!"的string物件引用,然後將"i love you!"字串和指向該物件的引用新增到雜湊表中。接著,在雜湊表中查詢第二個"i love you!",這一次由於找到了該字串,所以編譯器不會執行任何操作,**中再沒有其它的文字常量字串,編譯器的任務完成,**開始執行。執行時,clr發現第乙個語句需要乙個"abc"字串引用,於是,clr會在內部的雜湊表中查詢"i love you!",並且會找到,這樣指向先前建立的string物件的引用就被儲存在變數p1中,執行第二條語句時,clr會再一次在雜湊表中查詢"i love you!",並且仍然會找到,指向同乙個string物件的引用會被儲存在變數p2中,到此p1和p2指向了同乙個引用,所以system.object.equals(p1,p2)就會返回true了。
簡單總結下學習中經常用到的字串函式:
string.equals()比較兩字串是否相等。其中過載方法中有區分大小寫和不區分大小寫的方法。
string.compare(string,string,boolean);比較兩個指定的string物件(其中忽略或考慮其大小寫),並返回乙個整數,指示二者在排序順序中的相對位置。第三個引數為true時不區分大小寫。
2 .將字串轉化為datetime
3. string.substring(int ,int)兩個引數。第乙個引數用來表示從那個位置開始,第二個引數表示從這個位置開始到後面的第幾個字母串,返回值為擷取的字串。
---------------------- asp.net+android+ios開發、.net培訓、期待與您交流! ----------------------
詳細請檢視:
黑馬程式設計師 c 中string字串
system.string型別 平時在程式設計中對於string的用法應該是特別頻繁的。string由於自身特殊的原因,它屬於引用型別。第一 既然string屬於引用型別,那麼是否可以用new操作符來生成呢?下面的 是錯誤的。string c new string aaa 第二 我們通常的做法是不用...
黑馬程式設計師 C 字串處理
windows phone 7手機開發 net培訓 期待與您交流!字串常用函式 substring contains indexof startswith endswith split 應用舉例 string s 定義乙個字串 string 網域名稱 s.substring 7 從指定序號開始到最後...
黑馬程式設計師 C語言 字串
一.字串的基本概念 簡單的字串 itcast 乙個 i 是乙個字元 很多個字元組合在一起就是字串了 char a 123 和 char a 的區別,可以比較大小 123 其實是由 1 2 3 0 組成 123 的儲存分布 字串的輸出 s 0 是不會輸出的 陣列是用來儲存相同型別的基本資料,陣列是有序...