IntPtr.Addition(IntPtr, Int32) Operator

Definition

Adds an offset to the value of a pointer.

public:
 static IntPtr operator +(IntPtr pointer, int offset);
public static IntPtr operator + (IntPtr pointer, int offset);
static member ( + ) : nativeint * int -> nativeint
Public Shared Operator + (pointer As IntPtr, offset As Integer) As IntPtr

Parameters

pointer
IntPtr

The pointer to add the offset to.

offset
Int32

The offset to add.

Returns

A new pointer that reflects the addition of offset to pointer.

Remarks

The Addition method defines the addition operation for IntPtr objects. It enables code such as the following.

int[] arr = {2, 4, 6, 8, 10, 12, 14, 16, 18, 20 };
unsafe {
   fixed(int* parr = arr)
   {
       IntPtr ptr = new IntPtr(parr);
       for (int ctr = 0; ctr < arr.Length; ctr++)
       {
          IntPtr newPtr = ptr + ctr * sizeof(Int32);
          Console.Write("{0}   ", Marshal.ReadInt32(newPtr));
       } 
   }
}  
// The example displays the following output:
//       2   4   6   8   10   12   14   16   18   20         
Dim arr() As Integer = {2, 4, 6, 8, 10, 12, 14, 16, 18, 20 }
Dim ptr As IntPtr = Marshal.UnsafeAddrOfPinnedArrayElement(arr, 0)
For ctr As Integer = 0 To arr.Length - 1
   Dim newPtr As IntPtr = ptr + ctr * Len(arr(0))
   Console.WriteLine("{0}   ", Marshal.ReadInt32(newPtr))
Next
' The example displays the following output:
'       2   4   6   8   10   12   14   16   18   20

Languages that do not support custom operators can call the Add method instead.

The addition operation does not throw an exception if the result is too large to represent as a pointer on the specified platform. Instead, it is performed in an unchecked context.

The equivalent method for this operator is IntPtr.Add(IntPtr, Int32)

Applies to

See also