zoukankan      html  css  js  c++  java
  • .NET面试题系列(22)字符串暂存池(缓冲池)

    序言

    字符串不可变性,字符串的‘暂存池’两个特性

    字符串是引用类型,程序中会存在大量的字符串对象,如果每次都创建一个字符串对象,会比较浪费内存、性能低,因此CLR做了“暂存池”(拘留池,缓冲池,暂存池),在一些情况下对于字符串对象进行了重用。

    string s1 = "rupeng";
    string s2 = "rupeng";
    string s3 = "ru" + "peng";
    string s4 = new string(s1.ToCharArray());
    string s5 = new string(new char[]{'r','u','p','e','n','g'});
    Console.WriteLine(Object.ReferenceEquals(s1,s2));
    Console.WriteLine(Object.ReferenceEquals(s1, s3));
    Console.WriteLine(Object.ReferenceEquals(s1, s4));
    Console.WriteLine(Object.ReferenceEquals(s1, s5));
    Console.WriteLine(Object.ReferenceEquals(s4, s5));

    面试题:上面的代码有几个字符串对象。答案:三个字符串对象s1、s2、s3是同一个字符串对象,在内容相同的情况下只有new才能产生一个新的字符串对象。

    资料

  • 相关阅读:
    NodeJS优缺点
    移动端触摸相关事件touch、tap、swipe
    vscode使用技巧
    js 字符串转数字
    js 导出Excel
    <!--[if IE 9]> <![endif]-->
    js 异步请求
    关于windows串口处理
    mfc 托盘提示信息添加
    微软的麦克风处理示列代码
  • 原文地址:https://www.cnblogs.com/cnki/p/12008000.html
Copyright © 2011-2022 走看看