在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 篇文章
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!