字串是程式常用的資料型別,它是一種引用型別。雖然c#是嚴格區分大小寫的,但是string和string在c#是一樣的。string相當於string在c#中的別名,在c#中它們是完全相同的。
string 是字串型別,它是個特殊的引用型別,所以string物件儲存在堆上,一切都是那麼的平常;然而,不平常的出現了:
class class1
static void main() }
輸出的結果是 "123"
string 到底是值型別還是引用型別? 如果是引用型別的話.輸出的結果應該是: "hellow"
如果是值型別,結果倒還說的過去。但是string 是引用型別啊,這是怎麼回事??
這是因為string物件是不可變的,什麼是不可變?
一旦初始化字元創型別變數,那麼它裡面的內容就固定下來,所有對它的修改(包括修改內容和拼接),將重新產生乙個新的字串物件,原來的字串物件不變。看來似乎修改了string物件的方法實際上是返回乙個包含修改內容的新string物件。
我們看下面的例子:
string a="i am a";//在堆上為字串a分配記憶體,並初始化
string b=a; //宣告b,與a指向同一記憶體空間
system.console.writeline("a is"+a);
system.console.writeline("b is"+b);
a="i am aa"; //改變a中的值
system.console.writeline("a is now"+a);
system.console.writeline("b is now"+b);
結果:a is i am a
b is i am a
a is now i am aa
b is now i am a
可以看出,a和b雖然指向同一記憶體空間,但a的改變,並不會影響到b,a改變時,它變成了乙個全新的物件,b還是指向原來的物件空間。
結論:雖然字串屬於引用型別,但是它並不像引用型別那樣工作,表面上更像乙個值型別。
C 中的字串類(string類)
1.字串搜尋 string s abc科學 int i s.indexof 科 注意 1 索引從0開始,如果沒有找到則返回值為 1 2 c 中,ascii和漢字都是用2位元組表示 2.字串比較 string s1 abc string s2 abc int n string.compare s1,s...
String字串型別
strlen key 擷取key值的長度 incr key 每執行一次值加1 decr key 每執行一次值減1 incrby key 步長 每執行一次值加 步長 decrby key 步長 每執行一次值減 步長 getrange key start end 擷取key值從幾到幾的字串 第乙個字串預...
C 基礎 String(字串)型別
字串型別是開發過程中使用頻率較高的資料型別之一,用於儲存一組字元。一 字串 1 字串的不可變性 當你給乙個字串重新賦值之後,老值並沒有銷毀,而是重新開闢一塊空間儲存新值。當程式結束後,gc掃瞄整個記憶體,如果發現有的空間沒有被指向,則立即把它銷毀。2 我們可以將字串看做是char型別的乙個唯讀陣列。...