Что лучше / безопаснее использовать: HandleRef или IntPtr (более новый исходный код от Microsoft больше не использует HandleRef)

) Например, в старом. Исходный код .NET Framework 2.0 (Windows Forms, Visual Studio 2005 - Whidbey), функция GetClientRect была определена с использованием HandleRef :

    [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)]
    public static extern bool GetClientRect(HandleRef hWnd, [In, Out] ref NativeMethods.RECT rect); 

В новом пакете кода Windows API (от Microsoft, 2009/2010) та же функция определяется с помощью IntPtr :

    [DllImport("user32.dll")]
    [return: MarshalAs(UnmanagedType.Bool)]
    internal static extern bool GetClientRect(IntPtr hwnd, ref CoreNativeMethods.RECT rect);

Фактически HandleRef не используется ни в одной из Исходные файлы Windows API Code Pack, хотя он активно использовался в сигнатурах собственных методов в старых исходных файлах .NET Framework.

15
задан Alex Vang 2 December 2010 в 13:01
поделиться