zoukankan      html  css  js  c++  java
  • string易错点整理总结

    简单说 string  就是char[],本质是一个16位Unicode字符数组,在托管堆,不在GC堆

     

    string 和System.String

    string 是C#语言的基元类型,类似于int,long等等,简化了语言代码,带来便捷可读性,System.String是FCL的基本类型,和有直接的映射关系,从IL角度看,两者之间没有任何不同

    恒定性:

     

     

     字符串驻留:

    公共语言运行库 通过维护一个表来存放字符串,该表称为驻留池,它包含 程序中 以编程方式声明或创建的

    每个唯一的字符串的一个引用,因此特定的值的字符串的实例在系统中只有一个,如果将同一字符串分配给

    几个变量,运行库会从驻留池中检索到该字符串的相同引用,并将它分配给各个变量

     

     

      有个易搞错的是  Isinterned返回 非null, 不代表两个字符串 引用了相同的内存地址,如下:

     还是上面所说的,在string s3=s3+"c"时   s3 的变量的值是动态拼接生成的,并没有直接去哈希表中拿到来实现,所以是不同的内存地址

    关于 IsInterned的:

       例子来了,它有助于让我们了解string的存储方面的东西:

    ① 最一般的

    ② 动态加后,会是什么呢

    ③再复杂些

     即

           

    ④ 但是如果后面 还有个语句,就有意思了,如下:

    ⑤ 如果不是变量,而是方法呢

     ⑥ 如果是常量呢

     ⑦ 如果是静态字段呢

     

     ⑧但是如果是两个字符串 显示拼接,编译器是会合并的,可以在IL代码中看到

    下面就不难理解

     

     ⑨ 

     

     

     string 和StringBuilder

     

     

  • 相关阅读:
    031-进阶(日志)
    Django 路由系统
    C++ 面向对象(接口-抽象类)
    C++ 面向对象(多态)
    C++ 面向对象(数据抽象)
    三十、首页列表显示全部问答,完成问答详情页布局
    二十九、制作首页的显示列表
    二十八、发布功能完成
    二十七、登录之后更新导航
    二十六、完成登录功能,用session记住用户名
  • 原文地址:https://www.cnblogs.com/wwkk/p/13722120.html
Copyright © 2011-2022 走看看