既然string是引用类型,其声明为什么不用new关键字? 你的意思是引用类型声明也不用new关键字吗? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 可以用new创建,但你要注意到string没有接受一个string作为参数的构造函数!也就是: string str = new string("hello"); //是非法的。而 string str = new string(new char[] {'h', 'e', 'l', 'l', 'o'}); //是合法的。 string是.NET的原始(Primitive)类型之一,和int/long一样,string的部分操作不是通过类库的函数,而是CLR的指令来完成的,比如Ldstr/Stloc(Stfld)指令就可以完成string负值的工作,不需要特别的构造函数。 by the way: valuetype不是也可用new创建吗?这和具体操作的类型没有关系,new只是C#调用ctor/创建对象的一种语法手段,编译器可以针对不同的情况选择适当的行为——但bottomline是你写的构造函数的确存在。 一, saucer(思归) : 编译器会帮你加的另外,根据MSDN文档 String的Construct 被Overload了很多次,下面是其列表:[C#] public String(char[]);[C#] public String(char, int);[C#] public String(char[], int, int);[C#] unsafe public String(char*);[C#] unsafe public String(char*, int, int);[C#] unsafe public String(sbyte*, int, int, Encoding);[C#] unsafe public String(sbyte*);C#中使用指针时必须申明为unsafe的 c# 如何设置线程超时时间 如何做投影图,(只有五十分了) C# 如何实现大尺寸文件的随机存取? 如何在程序运行时获取当前应用程序可执行文件的路径? 安装程序的CustomActionData属性设置 我的问题太弱了请人帮忙?刚学c#,我在pictureBox上画的图,怎么打开其他任何窗体,关了后,就留下空白? F1: C# richtextbox如何实现分散对齐 wm5的问题,请教牛人,急 MS.Net的IDE太慢了,大家都是用这个搞开发吗?还有更好的选择吗?C#B是吗? 哪儿有C#单独的编译器下载啊 第一次写了一篇C#的文章,请用C#的兄弟多多指教? 第一张vs.net安装盘,安装不上!
string str = new string("hello"); //是非法的。
而
string str = new string(new char[] {'h', 'e', 'l', 'l', 'o'});
//是合法的。
string是.NET的原始(Primitive)类型之一,和int/long一样,string的部分操作不是通过类库的函数,而是CLR的指令来完成的,比如Ldstr/Stloc(Stfld)指令就可以完成string负值的工作,不需要特别的构造函数。
这和具体操作的类型没有关系,new只是C#调用ctor/创建对象的一种语法手段,编译器可以针对不同的情况选择适当的行为——但bottomline是你写的构造函数的确存在。
另外,根据MSDN文档 String的Construct 被Overload了很多次,下面是其列表:[C#] public String(char[]);
[C#] public String(char, int);
[C#] public String(char[], int, int);
[C#] unsafe public String(char*);
[C#] unsafe public String(char*, int, int);
[C#] unsafe public String(sbyte*, int, int, Encoding);
[C#] unsafe public String(sbyte*);
C#中使用指针时必须申明为unsafe的