This is the value type used to store unmanaged pointers or handles (e.g., IntPtr objects are used in the System.IO.FileStream class to hold file handles). Using this type allows your pointers to be platform-independent, as IntPtr is automatically mapped to a 32-bit integer on 32-bit operating systems and to a 64-bit integer on 64-bit operating systems. The IntPtr type is CLS-compliant and should be used in preference of the UIntPtr . public struct IntPtr : System.Runtime.Serialization.ISerializable { // Public Constructors public IntPtr (int value ); public IntPtr (long value ); public IntPtr (void *value ); // Public Static Fields public static readonly IntPtr Zero ; // =0 // Public Static Properties public static int Size {get; } // Public Static Methods public static bool operator != (IntPtr value1 , IntPtr value2 ); public static bool operator = = (IntPtr value1 , IntPtr value2 ); public static explicit operator int (IntPtr value ); public static explicit operator long (IntPtr value ); public static explicit operator IntPtr (int value ); public static explicit operator IntPtr (long value ); public static explicit operator IntPtr (void *value ); public static explicit operator Void (IntPtr value ); // Public Instance Methods public override bool Equals (object obj ); // overrides ValueType public override int GetHashCode ( ); // overrides ValueType public int ToInt32 ( ); public long ToInt64 ( ); public void* ToPointer ( ); public override string ToString ( ); // overrides ValueType } HierarchyObject ValueType IntPtr(System.Runtime.Serialization.ISerializable) Returned ByMultiple types Passed ToMultiple types |