string是一个类
System.String A="12";这样没问题
System.String A=new System.String("12");这样则报语法错误,
因为没有相应的构造函数。
那么System.String A="12";这个是怎么实现的,它的实现过程是怎么样的。
或者是操作操作符重载,把"12"作为char[]然后调用相应的构造函数去实现。
大家说说看
System.String A="12";这样没问题
System.String A=new System.String("12");这样则报语法错误,
因为没有相应的构造函数。
那么System.String A="12";这个是怎么实现的,它的实现过程是怎么样的。
或者是操作操作符重载,把"12"作为char[]然后调用相应的构造函数去实现。
大家说说看
解决方案 »
- C#用GZipStraem做一个分卷压缩程序
- 寻高手,关于webBroser,与论坛自动发帖有关
- c#中,如何比较两个字符串是否相等?
- 菜鸟问题:关于基类和派生类的问题
- 请教高手:怎样实现web服务器上非共享文件的并发读写操作?万分感谢!
- 求 .Net 开发 Office 的教程
- @@@@@@从数据库中读取的数据存储为XML时,中文都是乱码,如何解决?@@@@@@@
- webBrowser與 InvokeMember
- 管理员,版主进来看看!
- 请C#高手们帮帮忙
- .NET 中的SOAP等问题请教!!!!
- 各位大虾:我在datagrid里显示的是一个一个视图,但我要update其中几列数据(在不同的table中)
楼主首先要清楚String类型属于引用类型。因此上面的表达式表示创建一个String类型的变量,把等号右边的字符串对象"12"的引用传给等号左边的变量。
这个表达式是引用传递,相当于以前C和C++的指针。右边的字符串是一个对象,而左边是你创建的一个接受该字符串对象引用的变量。
这个我也知道,A是一个引用,它指向托管堆中的一个对象实例。
起先CLR会为它在托管堆中分配内存,再调用它的构造函数进行实例化。
问题在于System.String A="12";
这样进行赋值System.String去调用了哪个构造函数
因为System.String A=new System.String("12");这样是不对的,因为没有相应的构造函数。
所以这个"12"肯定会作过一些手脚,例如把它先放在char[]中,然后再对System.String进行构造。
这个=号应该是操作操作符重载的情况吧。这里面还是有点不清楚,所以各位高手指点一下吧。
String a="a";他并不调用任何构造函数。
在IL代码中并没有任何newobj(构造对象实例)指令,仅仅是ldstr(加载字符串)而已。
String在c#属于基元类型,在元数据中以文本常量形式建立String。
String a="a";他并不调用任何构造函数。
在IL代码中并没有任何newobj(构造对象实例)指令,仅仅是ldstr(加载字符串)而已。
楼主,这条语句没有调用构造函数,只是一个把已有对象的引用转递给变量的一个过程。
http://www.cndevx.com/Article/ShowArticle.asp?ArticleID=1880如果知道运算符重载,那样理解也可以!
这个System.String类居然没有调用它自己的构造函数,晕了。