Ron*_*n C 5 stringbuilder memory-management .net-core asp.net-core
今天在VS2017 intellisense浮出水面InplaceStringBuilder时,我试图打字StringBuilder.  InplaceStringBuilder对我来说是新的,所以我开始挖掘,看看我能学到什么.
我注意到的第一件事是它是一个结构而不是一个类,它的类型信息如下所示:
#region Assembly Microsoft.Extensions.Primitives, Version=1.1.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
// C:\Users\Ron Clabo\Documents\Visual Studio 2017\Projects\wwwGiftOasisResponsive\packages\Microsoft.Extensions.Primitives.1.1.0\lib\netstandard1.0\Microsoft.Extensions.Primitives.dll
#endregion
using System.Diagnostics;
namespace Microsoft.Extensions.Primitives {
    [DebuggerDisplay("Value = {_value}")]
    public struct InplaceStringBuilder {
        public InplaceStringBuilder(int capacity);
        public int Capacity { get; set; }
        public void Append(string s);
        public void Append(char c);
        public override string ToString();
    }
}
Run Code Online (Sandbox Code Playgroud)
所以它有很多方法比StringBuilder.然后我google了解更多信息,InplaceStringBuilder但网上关于它的内容并不多,所以它看起来很新.
此外,我已经提到的差异,InplaceStringBuilder和之间有什么不同StringBuilder; 什么时候开发人员应该使用新的InplaceStringBuilder而不是旧的StringBuilder?  
由于它只进行一次分配,因此InplaceStringBuilder对于众所周知的、合理大小的字符串来说效率更高。我们可能希望在需要非常高效的方法中使用它。
它是通过Pull request #157引入的,其中包括以下评论。
旨在代替池化
StringBuilder或string.Concat当字符串的所有部分都已知时使用...仅对结果字符串进行 1 次分配...仅应用于众所周知的合理大小的字符串。对于其他所有内容,请使用StringBuilder...不要跨等待点使用...
PR 的历史讲述了这样一个故事:
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           248 次  |  
        
|   最近记录:  |