SbPool.cs 870 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. using System.Collections.Generic;
  2. using System.Text;
  3. namespace ET.PackageManager.Editor
  4. {
  5. /// <summary>
  6. /// StringBuilder池
  7. /// </summary>
  8. public static class SbPool
  9. {
  10. private static Stack<StringBuilder> g_pool = new Stack<StringBuilder>(5);
  11. public static StringBuilder Get()
  12. {
  13. lock (g_pool)
  14. {
  15. return g_pool.Count == 0
  16. ? new StringBuilder()
  17. : g_pool.Pop();
  18. }
  19. }
  20. public static void Put(StringBuilder sb)
  21. {
  22. sb.Clear();
  23. lock (g_pool)
  24. {
  25. g_pool.Push(sb);
  26. }
  27. }
  28. public static string PutAndToStr(StringBuilder sb)
  29. {
  30. var str = sb.ToString();
  31. Put(sb);
  32. return str;
  33. }
  34. }
  35. }