问一个说简单不简单,说复杂也绝对不复杂的困饶我很久的问题:) 首先string类型是类,string 类型表示一个 Unicode 字符的字符串。string 是 .NET Framework 中 System.String 的别名。string x=new string("dsafsadfsa"); //没有这样的构造函数,字符窜类的构造函数的参数是字符窜类,仔细想一想应该是不合理的str1和str2肯定是一类啦 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 既然是一类,类的实例化格式就应该是string str=new string();才对请下面这句哪里体现类的实例化?哪里体现了类的构造函数?感觉完全不符合语法嘛?string str="sfsadfsad"; 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的构造函数 如果你写一个类在里面把构造函数定义成private在外面调用的时候肯定会出错啊至于说可以接受一个参数你可以写两个构造函数第一:private class1()第二:public class1(int i)当然第二个可以调用 首先,string类是引用类型string x="dsfsdfsdf"不用new操作符是因为编译器会将这些文本常量存放在元数据中。这样string对象可以直接从原数据中的文本常量构造而得到string对象。而string str2=new string(xx)是正确的,它是用new操作符调用string对象提供的一些构造器. char[] cs = {'a','b','c'};String s1 = new String(cs); 方法我是知道的,我是问原理,这是我问荣耀老师(.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 string cccc = new string("kjkjj");并不是理论上不行,只是没有实现这样的方法而已。因为实际编程只需要string cccc = "kjkjj";就可以了。 开发一个像开发工具类似的winform,需要用到什么技术 正则表达式 替换 关于c# 自动生成不需要的文件夹 泛型集合和普通集合的异同 c#初学者应该选择什么样的教程??? 深度复制和浅度复制的区别 哪位高手告诉我,我写的这个为什么不对呀!!谢谢 选择消息队列好还是用Socket好? 我现在写一个有关于Socket的程序,可是Server端只能接受一个Client端,请各位高帮帮忙。怎样才能可以接受多台客户端呢? 我在用DataGrid来delete记录时发生错误(不能换页) 请问如何提取一个字符串中的某些内容并保存到数组中 如何恢复工具箱中各控件的排列顺序?
string x=new string("dsafsadfsa");不能这样写是因为String类的构造函数中不支持这个参数
string str="abc";
char[] xx={'a','b','c'};
string str2=new string(xx); 这里能够编译成功是因为String类的构造函数中支持这个char[]参数
可参考MSDN查看string的构造函数
在里面把构造函数定义成private
在外面调用的时候肯定会出错啊
至于说可以接受一个参数你可以写两个构造函数
第一:private class1()第二:public class1(int i)
当然第二个可以调用
string x="dsfsdfsdf"不用new操作符是因为编译器会将这些文本常量存放在元数据中。这样string对象可以直接从原数据中的文本常量构造而得到string对象。
而string str2=new string(xx)是正确的,它是用new操作符调用string对象提供的一些构造器.
String s1 = new String(cs);
>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
并不是理论上不行,只是没有实现这样的方法而已。因为实际编程只需要
string cccc = "kjkjj";
就可以了。