Возможно, некоторые из вас согласны со мной в том, что рекомендации по реализации idisposable < /code> очень запутанны. Тем не менее, я хочу знать, что то, как я намерен реализовать Idisposable , является достаточным и безопасным. Так что я думаю о чем -то подобном < /p>
Код: Выделить всё
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential)]
public sealed class MemBlock : IDisposable
{
IntPtr ptr;
int length;
MemBlock(int size)
{
ptr = Marshal.AllocHGlobal(size);
length = size;
}
public void Dispose()
{
if (ptr != IntPtr.Zero)
{
Marshal.FreeHGlobal(ptr);
ptr = IntPtr.Zero;
GC.SuppressFinalize(this);
}
}
~MemBlock()
{
Dispose();
}
}
Кроме того, финализатор строго необходим? Все мысли приветствуются.
Подробнее здесь: https://stackoverflow.com/questions/141 ... aled-class
Мобильная версия