Правильное использование IntPtr в C #

Я думаю Я понимаю использование 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()
        { 

        }
    }
}

Кроме того, может кто-нибудь сказать мне, в чем именно заключается смысл этого компонента? У меня тоже возникли проблемы с осмыслением этой концепции.

11
задан Chris Schmich 23 May 2011 в 06:17
поделиться