CLR有一种特殊的构造String的方法,这里涉及的东西不少。
简单的说,当你这样定义一个字符串时:string s="abc";   该字符串被编译器放到模块的元数据中。CLR借助这个从元数据中取得的字符串来构造一个String对象。
可是有的时候我们不是从一个字符串来构造String,怎么办?使用new 调用String提供的构造函数。看一下下面调用string(char * value)构造函数的例子:
using System;
namespace abc
{
public class a
{
static void Main()
{
char[] c=new char[]{'a','b','c'};
unsafe{
string s;
fixed (char *p=c)
s=new string(p);
Console.WriteLine(s);
}
}
}
}
它是从char数组初始化一个新的字符串,这个char数组实例必须先于方法调用就存在,所以String的长度就是char数组的长度。
string(char * value)与string(char[])是一样的,设计带有指针参数的构造函数的目的是使它可以被c++托管扩展编写的代码调用。