Я думаю Я понимаю использование IntPtr, хотя Я действительно не уверен.
Я скопировал шаблон IDisposable из MSDN, чтобы посмотреть, что я могу получить от него, и хотя я понимаю его по большей части, я понятия не имею, как правильно реализовать IntPtr, или даже понять, что это такое, что предполагается «указать» на или ссылку. Вдобавок я понятия не имею, как даже назначить или преобразовать целое число, строку, char, double и т. Д. на IntPtr, чтобы создать из него указатель.
Кроме того, требует ли IntPtr небезопасного использования кода?
В общем, вот какой-то код, чтобы нарисовать картину того, о чем я говорю:
namespace Utilities
{
class Disposer : IDisposable
{
private IntPtr handle;
private Component component = new Component();
private bool disposed = false;
public Disposer(IntPtr handle)
{
this.handle = handle;
}
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
protected virtual void Dispose(bool disposing)
{
if(!this.disposed)
{
if (disposing)
{
component.Dispose();
}
CloseHandle(handle);
handle = IntPtr.Zero;
disposed = true;
}
}
[System.Runtime.InteropServices.DllImport("Kernal32")]
private extern static Boolean CloseHandle(IntPtr handle);
}
public unsafe class ExecuteMain
{
Object nuller = new Object();
byte boa = 0;
byte *blargh = boa;
public static void Main()
{
}
}
}
Кроме того, может кто-нибудь сказать мне, в чем именно заключается смысл этого компонента? У меня тоже возникли проблемы с осмыслением этой концепции.