基类object
基类object是最顶层的类,所有 的类都继承于它,string也是一个类,但它声明时为什么不用new啊?而用string a="";还有很多东西都是从类继承过来 的,为什么到最后不是类了啊,比如一些值类型的int double struct,他们就不是类了,而他们怎么从一个基类object演变成来的啊,就算是继承,它的那类的性质不会变的啊,它这些问题捆扰了我很久了,请大神指点指点。
[解决办法]
15年前在秘密研发c#的时候,我相信是为了兼容c语言string。
这种东西叫做“语法糖”。是编译器设计者特意给你做出来的“效果”,你可以把string当作特例。
string对象实例不需要new,用双引号把值包含起来就相当于new了。
而且也不支持引用,把一个字符串赋值给一个声明为string类型的变量,并不是如其它类型对象的变量那样的引用,而是相当于copy/clone。(当然,.net系统会自动维护一个内部字典,仅当需要copy的时候才copy,不需要的时候仍然是会让多个变量引用相同的一个string)
[解决办法]
Int32 i=new Int32()
这种写法实际也是可行的。值类型比如Int32 的机构实际是结构体(vs中选择Int32 按F12 可以查看)。既然是结构体我肯定不需要new了。
楼主的意思是想寻根究源,比如Int32派生子ValueType,但是我在vs当中压根不能看到它继承了ValueType的啥玩意,我用reflector看了下,也没发现啥。估计有些信息是被隐藏了吧。
帮顶一下 sp1234帮忙 结贴时也回复我一下 共同学习
[解决办法]