zoukankan      html  css  js  c++  java
  • 6.1. String

    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  //实际的length
    int 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,大于则是length
    
    2. 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. Release
    
    3. GetStringAndRelease
    这就是
  • 相关阅读:
    公式中表达单个双引号【"】和空值【""】的方法及说明
    Ext.net CRUD
    水煮肉片
    配置传入电子邮件(Office SharePoint Server 管理中心帮助)
    CodeSmith开发系列资料总结
    报表中的Excel操作之Aspose.Cells(Excel模板)
    40个UI设计工具和资源
    配置Sharepoint传入/传出电子邮件a
    联想乐Pad_A1获取root权限
    Windows Azure
  • 原文地址:https://www.cnblogs.com/zhangrCsharp/p/7695582.html
Copyright © 2011-2022 走看看