我认为我理解了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()
{
}
}
}
还有,能否有人告诉我这里组件的意义是什么?我也很难理解这个概念。