AngleSharp by Florian Rappl

<PackageReference Include="AngleSharp" Version="0.5.0" />

 Pool

static class Pool
Provides a pool of used / recycled resources.
using AngleSharp.Parser.Css; using System.Collections.Generic; using System.Diagnostics; using System.Text; namespace AngleSharp { [DebuggerStepThrough] internal static class Pool { private static readonly Stack<StringBuilder> _builder; private static readonly Stack<CssSelectorConstructor> _selector; private static readonly object _lock; static Pool() { _builder = new Stack<StringBuilder>(); _selector = new Stack<CssSelectorConstructor>(); _lock = new object(); } public static StringBuilder NewStringBuilder() { lock (_lock) { if (_builder.Count != 0) return _builder.Pop().Clear(); return new StringBuilder(); } } public static CssSelectorConstructor NewSelectorConstructor() { lock (_lock) { if (_selector.Count != 0) return _selector.Pop().Reset(); return new CssSelectorConstructor(); } } public static string ToPool(this StringBuilder sb) { lock (_lock) { _builder.Push(sb); } return sb.ToString(); } public static void ToPool(this CssSelectorConstructor ctor) { lock (_lock) { _selector.Push(ctor); } } } }