C#中string既然当作对象处理,为什么声明一个string变量,就能创建一个string实体呢?
为什么string name=new String("Fred");编译不通过?
string name="Fred";又是什么原因?

解决方案 »

  1.   

    顶楼主你一下。     
    http://qzshi.com     
    网站建设技术论坛   
    另外招版主,或合作管理员,有兴趣的加群4228406
      

  2.   

    string name="Fred";
    String Name=new String("Fred");//类名大写
      

  3.   

    为什么声明一个string变量,就能创建一个string实体呢? 
    ----------------------------------------------
    声明的时候并未创建。后面的问题,我只能跟你说,.Net中string是不变量(不是常量),一个字符串,从你在代码中使用之时起,在堆上被创建,但不能修改,所有string类所提供的字符串操作,返回的字符串都是重新创建的,创建之后与原来的字符串就没有什么关系了。作为不变量,从概念上来讲,就不存在以一个现存的字符串为基础,new一个字符串的问题。你可以去看看String类的构造函数重载,没有这种形式的构造函数,所以,你这样new一个字符串,肯定会报错的。
      

  4.   

    别的都有人回答了。我答这个吧
    string name="Fred";又是什么原因?
    左值的意思是,你在栈上分配了一块变量,它是一个只想string型的引用变量。而后面“Fred”是在应用程序的string pool中的一个实际字符串。用等号连接,就是把你的应用变量名和实际的string对象联系到了一起。
      

  5.   

    别的都有人回答了。我答这个吧 
    string name="Fred";又是什么原因? 左值的意思是,你在栈上分配了一块空间,它是一个指向string型的引用变量。而后面“Fred”是在应用程序的string pool中的一个实际字符串。用等号连接,就是把你的应用变量名和实际的string对象联系到了一起。-----开始的有错字,这回改了下。哈哈