本当によくわかりませんが、IntPtr の使用法は理解していると思います。
MSDN から IDisposable パターンをコピーして、そこから何が得られるかを確認しました。ほとんどの部分は理解していますが、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()
{
}
}
}
また、ここのコンポーネントの要点を正確に誰か教えてもらえますか? 私もこの概念に頭を悩ませています。