Extension.Unsafe.cs 696 B

1234567891011121314151617181920
  1. namespace TBL.CSharp.Base
  2. {
  3. public static partial class Extension
  4. {
  5. /// <summary>
  6. /// 缓冲使用委托
  7. /// </summary>
  8. public unsafe delegate void OnBufferUse(void* buffer);
  9. /// <summary>
  10. /// 在栈上开辟一段指定长度的 <see langword="unsafe"/> 缓冲区并立即使用
  11. /// <para>因为 C# 的 <see langword="stackalloc"/> 作用域问题,使用此方式可以避免栈溢出</para>
  12. /// </summary>
  13. public static unsafe void UseStackBuffer(int size, OnBufferUse callback)
  14. {
  15. var buffer = stackalloc byte[size];
  16. callback(buffer);
  17. }
  18. }
  19. }