c#基础系列之System.String的深入理解

2020-01-05 09:21:48丽君
  • 定义字符串实例的关键字string只是System.String 类型的一个映射。

    c#,System.String

    注意事项

    • 关于字符串中的回车符和换行符一般大家喜欢直接硬编码‘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类型的常量在运行时是有特殊待遇的。
      • 由于字符串的不变性,也就意味着多个线程同时操作该字符串不会有任何线程安全的问题。这在某些共享配置的设计中很有用。