首先string类型是类,string 类型表示一个 Unicode 字符的字符串。string 是 .NET Framework 中 System.String 的别名。string x=new string("dsafsadfsa"); //没有这样的构造函数,字符窜类的构造函数的参数是字符窜类,仔细想一想应该是不合理的str1和str2肯定是一类啦

解决方案 »

  1.   

    既然是一类,类的实例化格式就应该是string str=new string();才对请下面这句哪里体现类的实例化?哪里体现了类的构造函数?感觉完全不符合语法嘛?string str="sfsadfsad";
      

  2.   

    string x="dsfsdfsdf"; 这里的x肯定是一个对象实例
    string x=new string("dsafsadfsa");不能这样写是因为String类的构造函数中不支持这个参数
    string str="abc";
    char[] xx={'a','b','c'};
    string str2=new string(xx); 这里能够编译成功是因为String类的构造函数中支持这个char[]参数
    可参考MSDN查看string的构造函数
      

  3.   

    如果你写一个类
    在里面把构造函数定义成private
    在外面调用的时候肯定会出错啊
    至于说可以接受一个参数你可以写两个构造函数
    第一:private class1()第二:public class1(int i)
    当然第二个可以调用
      

  4.   

    首先,string类是引用类型
    string x="dsfsdfsdf"不用new操作符是因为编译器会将这些文本常量存放在元数据中。这样string对象可以直接从原数据中的文本常量构造而得到string对象。
    而string str2=new string(xx)是正确的,它是用new操作符调用string对象提供的一些构造器.
      

  5.   

    char[] cs = {'a','b','c'};
    String s1 = new String(cs);
      

  6.   

    方法我是知道的,我是问原理,这是我问荣耀老师(.NET大局观,C++ template的译者)后,他给我的解释,和我想的差不多,str1和str2不是一种类型!=====================================================================
    >string x="dsfsdfsdf";
    >
    >这里的x这个变量到底是不是对象?是变量,也是对象。>如果是,为什么不是下面这样写?
    >
    >string x=new string("dsafsadfsa");
    >
    >如果照上面的写,编译都要出错。因为语法不正确,改为:string* x2= new string("dsafsadfsa");>
    >引申问题:
    >
    >string str="abc";
    >
    >char[] xx={'a','b','c'};语法错误,改为:char  xx [] = {'a','b','c'};>string str2=new string(xx);改为:string* str2 = new string(xx);>
    >上面2段里的str1和str2最后效果是一样的,我想问这2个str类型到底是不是一类?一个是char型数组,一个是动态分配的std::string对象,有区别。- Royal
      

  7.   

    string cccc = new string("kjkjj");
    并不是理论上不行,只是没有实现这样的方法而已。因为实际编程只需要
    string cccc = "kjkjj";
    就可以了。