IntPtr.Add(IntPtr, Int32) IntPtr.Add(IntPtr, Int32) IntPtr.Add(IntPtr, Int32) IntPtr.Add(IntPtr, Int32) Method

Definition

Addiert einen Offset zum Wert eines Zeigers.Adds an offset to the value of a pointer.

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

Parameter

pointer
IntPtr IntPtr IntPtr IntPtr

Der Zeiger, zu dem der Offset addiert werden soll.The pointer to add the offset to.

offset
Int32 Int32 Int32 Int32

Der Offset, der addiert werden soll.The offset to add.

Gibt zurück

Ein neuer Zeiger, der die Addition von offset zu pointer widerspiegelt.A new pointer that reflects the addition of offset to pointer.

Beispiele

Im folgenden Beispiel wird ein IntPtr -Objekt instanziiert, das auf den Anfang eines Arrays mit zehn Elementen zeigt. Anschließend wird die Add -Methode aufgerufen, um die Elemente im Array zu durchlaufen.The following example instantiates an IntPtr object that points to the beginning of a ten-element array, and then calls the Add method to iterate the elements in the array.

using System;
using System.Runtime.InteropServices;

public class Example
{
   public static void Main()
   {
      int[] arr = { 2, 4, 6, 8, 10, 12, 14, 16, 18, 20 };
      unsafe {
         fixed(int* parr = arr) {
            IntPtr ptr = new IntPtr(parr);
            // Get the size of an array element.
            int size = sizeof(int);
            for (int ctr = 0; ctr < arr.Length; ctr++)
            {
               IntPtr newPtr = IntPtr.Add(ptr, ctr * size);
               Console.Write("{0}   ", Marshal.ReadInt32(newPtr));
            }
         }      
      }
   }
}
// The example displays the following output:
//       2   4   6   8   10   12   14   16   18   20
Imports System.Runtime.InteropServices

Module Example
   Public Sub Main()
      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 = IntPtr.Add(ptr, ctr * Len(arr(0)))
         Console.Write("{0}   ", Marshal.ReadInt32(newPtr))
      Next
   End Sub
End Module
' The example displays the following output:
'       2   4   6   8   10   12   14   16   18   20

Hinweise

Die Add -Methode löst keine Ausnahme aus, wenn das Ergebnis zu groß ist, um als Zeiger auf der angegebenen Plattform dargestellt zu werden.The Add method does not throw an exception if the result is too large to represent as a pointer on the specified platform. Stattdessen wird die Additions Operation in einem nicht überprüften Kontext ausgeführt.Instead, the addition operation is performed in an unchecked context.

Sprachen, die das Überladen von Operatoren oder benutzerdefinierte Operatoren nicht unterstützen, können mit dieser Methode einen Offset zum Wert eines Zeigers hinzufügen.Languages that do not support operator overloading or custom operators can use this method to add an offset to the value of a pointer.

Gilt für:

Siehe auch