我想我了解 IntPtr 的使用,尽管我真的不确定。
我从 MSDN 复制了 IDisposable 模式只是为了看看我能从中得到什么,虽然我大部分都理解它,但我不知道如何正确实现 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()
{
}
}
}
另外,有人能告诉我这里组件的意义是什么吗?我也很难理解这个概念。