C#将String视为基元类型,C#编译器允许在源代码中直接使用字面值字符串.编译器将这些字符串存放到模块的元数据中,并在运行时加载和引用它们....用于构造对象新实例,但上述代码中并没有出现newobj指令,有一个特殊的ldstr(即 load string)指令,它使用从元数据获得的字面值(literal)字符串构造String对象.这证明CLR...实际是用一种特殊方式构造字面值String对象
如果使用不安全的(unsafe)代码,可以从一个Char*或Sbyte*参数构造一个String.这时要使用C#的new操作符,并调用由String...类型提供的、能接受Char*或Sbyte*参数的某个构造器.这些构造器将创建String对象,根据由Char实例或有符号(signed)字节构成的一个数组来初始化字符串。...";
在上述代码中,由于所有字符串都是字面值,所以C#编译器能在编译时连接它们,最终将一个字符串即(即"Hi there.")放到模块的元数据中.对非字面值字符串使用+操作符,连接则在运行时进行.运行时连接不要用