using System;
using System.Text;
namespace TEngine
{
///
/// 字符串构建器缓存。
/// 常用于临时构筑。
///
public static class StringBuilderCache
{
[ThreadStatic] private static StringBuilder _cacheStringBuilder;
private const int MaxBuilderSize = 512;
///
/// 获取缓存中的字符串构建器。
///
/// 字符串构建器容量。
/// 字符串构建器。
public static StringBuilder Acquire(int capacity = 256)
{
StringBuilder stringBuilder = _cacheStringBuilder;
if (stringBuilder != null && stringBuilder.Capacity >= capacity)
{
_cacheStringBuilder = null;
stringBuilder.Clear();
return stringBuilder;
}
return new StringBuilder(capacity);
}
///
/// 获取文本并释放字符串构建器。
///
/// 字符串构建器。
/// 文本实例。
public static string GetStringAndRelease(StringBuilder stringBuilder)
{
string result = stringBuilder.ToString();
Release(stringBuilder);
return result;
}
///
/// 释放字符串构建器。
///
/// 字符串构建器。
public static void Release(StringBuilder stringBuilder)
{
if (stringBuilder.Capacity <= MaxBuilderSize)
{
_cacheStringBuilder = stringBuilder;
}
}
}
}