ToPointer Method

IntPtr.ToPointer Method

Updated: June 2010

Converts the value of this instance to a pointer to an unspecified type.

This API is not CLS-compliant. 

Namespace:  System
Assembly:  mscorlib (in mscorlib.dll)

public void* ToPointer()

Return Value

Type: System.Void*
A pointer to Void; that is, a pointer to memory containing data of an unspecified type.

The following example copies a string in reverse, by using byte pointers to read and write characters between the source and destination strings. Source and destination pointers are returned by using the ToPointer() method. The reverse string copy is an unsafe operation and, in C#, it is performed inside an unsafe code region. In C#, this example must be compiled with the /unsafe complier option.

using System;
using System.Runtime.InteropServices;

class NotTooSafeStringReverse
    static public void Main()
        string stringA = "I seem to be turned around!";
        int copylen = stringA.Length;

        // Allocate HGlobal memory for source and destination strings
        IntPtr sptr = Marshal.StringToHGlobalAnsi(stringA);
        IntPtr dptr = Marshal.AllocHGlobal(copylen + 1);

        // The unsafe section where byte pointers are used.
            byte *src = (byte *)sptr.ToPointer();
            byte *dst = (byte *)dptr.ToPointer();

            if (copylen > 0)
                // set the source pointer to the end of the string 
                // to do a reverse copy.
                src += copylen - 1;

                while (copylen-- > 0)
                    *dst++ = *src--;
                *dst = 0;
        string stringB = Marshal.PtrToStringAnsi(dptr);

        Console.WriteLine("Original:\n{0}\n", stringA);
        Console.WriteLine("Reversed:\n{0}", stringB);

        // Free HGlobal memory

// The progam has the following output: 
// Original: 
// I seem to be turned around! 
// Reversed: 
// !dnuora denrut eb ot mees I

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile for Smartphone, Windows Mobile for Pocket PC, Xbox 360, Zune

The .NET Framework and .NET Compact Framework do not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

.NET Framework

Supported in: 3.5, 3.0, 2.0, 1.1, 1.0

.NET Compact Framework

Supported in: 3.5, 2.0, 1.0

XNA Framework

Supported in: 3.0, 2.0, 1.0




June 2010

Added an example.

Customer feedback.

Community Additions

© 2015 Microsoft