在C#中數據類型分為兩年夜類,值類型ValueType、應用類型Object。而字符串類型string作為一種特別的存在,良多時辰輕易讓人對其類型發生錯覺
從string類型的界說來闡發
1)public sealed class String
2)注重關頭字 class,這個有印象吧,class是屬于引用類型的
3)所以,在C#中string類型就是引用類型,這點需要服膺
再看int類型的界說是什么呢?
1)public struct Int32
2)int類型大師都知道是屬于值類型的,并且struct也是值類型
從string類型的值來闡發
1)string str = null; 這個就可以當作功
2)int a = null; 如許就會報錯:“無法將null轉換為int”
3)從這里也可以看出,string類型是引用類型
經由過程is比力運算符來闡發
建立任何一個C#的項目,本文建立的是節制臺應用法式,輸入如圖所示的代碼,輸入完整,編譯器就已經提醒“給心猿意馬的表達式始終不是所供給的ValueType類型”,從此處也可以看出,string不是值類型
經由過程is比力運算符運行成果來闡發
從運行成果可以看到,string不是值類型,那么它就是引用類型了
經由過程is直接判定string是否是object來闡發
從代碼與運行成果可以看出,string屬于object類型,所以,它就是引用類型了
總結
從上面各類角度都可以得出結論,在C#中,string是屬于引用類型的。只是點竄它的值時,它會從頭拷貝一份新實例點竄,不會在本來的空間中點竄,所以,輕易讓人誤覺得是值類型
0 篇文章
如果覺得我的文章對您有用,請隨意打賞。你的支持將鼓勵我繼續創作!