注意事项
- 关于字符串中的回车符和换行符一般大家喜欢直接硬编码‘rn',但是不建议这么做,一旦程序迁移到其他平台,将出现错误。相反,推荐使用System.Environment类的NewLine属性来生成回车符和换行符,可以跨平台使用的。
- 常量字符串的拼接和非常量字符串在CLR中行为是不一样的。具体请查看性能部分。
-
字符串之前加@符号会改变编译器的行为,如果加了@符号,编译器会把String中的转义字符视为正常字符来显示。也就是我定义的什么内容就是什么内容,主要在使用文件路径或者目录字符串中使用。以下两个String内容的输出将完全一致。
static void Main(string[] args) { string a = "c:temp1"; string b = @"c:temp1"; Console.WriteLine(a); Console.WriteLine(b); Console.Read(); }性能
- c#的编译器直接支持String类型,并将定义的常量字符串在编译期直接存放到模块的元数据中。然后会在运行时直接加载。这也说明String类型的常量在运行时是有特殊待遇的。
- 由于字符串的不变性,也就意味着多个线程同时操作该字符串不会有任何线程安全的问题。这在某些共享配置的设计中很有用。











