分享

什么是拘留池(C#)

 scholes_goal 2011-06-03

什么是拘留池

string类型是C#中一个很特殊的类型。看上去象值类型,事实上确实引用类型。

string中有一个概念是拘留池。了解它更有利于我们更好的使用string类型。

1, 什么是拘留池?

公共语言运行库会自动维护一个名为“拘留池”(intern pool) 的表,它包含在程序中声明的每个唯一字符串常数的单个实例,以及以编程方式添加的 String 的任何唯一实例。

该拘留池节约字符串存储区。如果将字符串常数分配给几个变量,则每个变量设置为引用“拘留池”(intern pool) 中的同一常数,而不是引用具有相同值的 String 的几个不同实例。

此方法在拘留池中查找 str。如果已经将 str 放入拘留池中,则返回对此实例的引用;否则返回空引用(在 Visual Basic 中为 Nothing)。

2, string类型变量值修改后,实际上是在内存中新创建了一个空间。而不是在原有值上的修改。

     理解了拘留池的概念,对这句话就更好理解。因为一个“中国人”的值可能有多个string类型变量指向该值。

     当其中一个变量改变“中国人”为“中国人民”时,公共语言运行库会重新给“中国人民”分配一块空间,而不是修改原来的“中国人”。因为修改原来的值会影响其它指向该值的变量。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多