c# string型別(引用型別)
2023年03月31日 10:34:45
閱讀數:966 名稱
cts型別
說明string
system.string
unicode字串
string str1 = "hello ";
string str2 = "world ";
這是乙個值型別的賦值,但string是乙個引用型別。string被分配在堆上,而不是棧上。因此,當把乙個字串變數賦給另乙個字串時,會得到對記憶體中同乙個字串的兩個引用。但是,string與引用型別在常見的操作上有一些區別。例如字串是不可改變的。修改其中乙個字串,就會建立乙個全新的string物件,而另乙個字串不會發生任何變化。
using system;
class stringexample
public static int main()
string s1 ="aaaa";
string s2 = s1;
console.writeline("s1:" + s1);
console.writeline("s2:" + s2);
s1 = "bbbb";
console.writeline("s1:" + s1);
console.writeline("s2:" + s2);
return 0;
輸出結果:
s1: aaaa
s2: aaaa
s1: bbbb
s2: aaaa
改變s1的值對s2沒有影響,這與引用型別的操作相反,當用"aaaa"初始化s1時,就在堆上分配了乙個新的string物件。在初始化s2時,引用也指向這個物件,所以s2的值也是"aaaa",但是當改變s1的值時,並不會替換原來的值,堆上會為新值分配乙個新的string物件,s2扔指向原來的物件,所以它的值沒有變。這實際上是運算子過載的結果。
C string 特殊引用型別
c 有string關鍵字,在翻譯成.net類時,它就是system.string.有了它,像字串連線和字串複製這樣的操作就簡單了.1 string 是引用型別還是值型別 引用型別操作 當使用過載操作符 給string物件賦值時,string的物件是引用型別,它保留在堆上,而不是堆疊上.因此,當把乙個...
C string 特殊的引用型別
net 框架程式設計 修訂版 中有這樣一段描述 string型別直接繼承自object,這使得它成為乙個引用型別,也就是說執行緒上的堆疊上不會駐留有任何字串。譯註 注意這裡的 直接繼承 直接繼承自object的型別一定是引用型別,因為所有的值型別都繼承自system.valuetype。值得指出的是...
c string型別轉換為char 型別
string 是c 標準庫裡面其中乙個,封裝了對字串的操作 把string轉換為char 有3中方法 1。data 如 string str abc char p str.data 2.c str 如 string str gdfd char p str.c str 3 copy 比如 string...