博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
6.1. String
阅读量:6359 次
发布时间:2019-06-23

本文共 1617 字,大约阅读时间需要 5 分钟。

public sealed class String:IComparable,ICloneable,IConvertible,IComparable,IEnumerable,IEquatable

这个类才是重点,而且和 System.Text.StringBuilder,StringBuilderCache关系紧密

构造函数

全部都是extern定义的public extern String(char[] value);unsafe public extern String(sbyte* value);所以我不知道它的内部是不是char[]

this[int index]

连这个也是extern,所以我不知道它的内部是不是char[],看看clr via c#吧

System.Text.StringBuilder:ISerializable

主要作用是利用内部的char[],来避免频繁的创建string实例内部使用两个char[] ,    1.char [] m_ChunkChars     2. StringBuilder m_ChunkPrevious // 也算不上数组,不过是对自己的引用ToString() 就是将两者合并之后的值内部扩展capacity的方法是 ExpandByABlock

属性

public int Length{get;set;}public int Capacity{get;set;}public int MaxCapacity{get;}public char this[int]{get;set;}

方法

Append()AppendFrom()AppendLine()Clear()CopyTo(int,char[],int,int)EnsureCapacity(int)Insert(int,***)Replace()ToString()

分析

int m_ChunkLength  //实际的lengthint m_ChunkOffset  //m_chunkPrevious 的长度char[] m_ChunkChars StringBuilder m_ChunkPrevious //保存的前一个块int m_MaxCapacity   //默认Int32.MaxValue,也可以指定int DefaultCapacity=16;m_ChunkLength=0;m_ChunkOffset=0;1. StringBuilder(string value,int startIndex,int length,int capacity);    默认的m_ChunkChars 的内容长度是16,大于则是length2. Append(string)    一般的基元类型都转成string后调用该方法    在长度3. ExpandByABlock(int)    int newBlockLength = Math.Max(minBlockCharCount,Math.Min(Length,MaxChunkSize));    1. Math.Min(Length,MaxChunkSize) = Math.Min(Length,8000)    2. Math.Max(minBlockCharCount,value1)        minBlockCharCount

System.Text.StringBuilderCache

能够在单线程中显示缓存多个stringbuilder实例const int MAX_BUILDER_SIZE = 360;1. Acquire    2. Release3. GetStringAndRelease

转载于:https://www.cnblogs.com/zhangrCsharp/p/7695582.html

你可能感兴趣的文章
redis zset 顺序问题
查看>>
C# 判断网站是不是discuz论坛
查看>>
视频播放器之————JW Player参数详解
查看>>
14.15. CentOS 网络配置
查看>>
Socket 专题
查看>>
[20160923]取出备份集的archivelog文件.txt
查看>>
.Net程序员安卓学习之路6:等待条
查看>>
使用 CodeIgniter 框架快速开发 PHP 应用(六)
查看>>
上云过等保之数据库审计产品如何选购?
查看>>
如何用机器学习对文本分类
查看>>
HBase-1.2.4LruBlockCache实现分析(二)
查看>>
The computation of homography, essential and fundamental matrix
查看>>
自动驾驶离我们还有多远?
查看>>
最重要,最常用和有用的Linux命令大集合
查看>>
不忘初码,聚栈前行
查看>>
spring:如何用代码动态向容器中添加或移除Bean ?
查看>>
Moving to Docker(二)搭建一个私有registry服务
查看>>
开发者可以使用Docker做什么?
查看>>
网络监控神器!这7大免费开源工具可别错过
查看>>
高德地图POI升维 打通阿里电商数据
查看>>