Я думаю Я понимаю использование IntPtr, хотя я действительно не уверен.
Я скопировал шаблон IDisposable из MSDN, просто чтобы посмотреть, что я могу из него получить, и, хотя я понимаю его по большей части, я не знаю, как правильно реализовать IntPtr или даже понять, что это такоечто он должен «указывать» или ссылаться.Кроме того, я понятия не имею, как даже назначить или привести целое число, строку, символ, двойное число и т. Д. К 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()
{
}
}
}
Кроме того, кто-то может сказать мне, в чем смысл компонента здесь, точно?У меня также возникают проблемы с обдумыванием этой концепции.