IntPtr.Add(IntPtr, Int32) Méthode

Définition

Ajoute un offset à la valeur d'un pointeur.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

Paramètres

pointer
IntPtr

Pointeur auquel ajouter l'offset.The pointer to add the offset to.

offset
Int32

Offset à ajouter.The offset to add.

Retours

Nouveau pointeur qui reflète l'ajout d'un offset au pointer.A new pointer that reflects the addition of offset to pointer.

Exemples

L’exemple suivant instancie un objet IntPtr qui pointe vers le début d’un tableau de dix éléments, puis appelle la méthode Add pour itérer les éléments dans le tableau.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

Remarques

La méthode Add ne lève pas d’exception si le résultat est trop grand pour être représenté comme un pointeur sur la plateforme spécifiée.The Add method does not throw an exception if the result is too large to represent as a pointer on the specified platform. Au lieu de cela, l’opération d’ajout est effectuée dans un contexte non vérifié.Instead, the addition operation is performed in an unchecked context.

Les langages qui ne prennent pas en charge la surcharge d’opérateur ou les opérateurs personnalisés peuvent utiliser cette méthode pour ajouter un décalage à la valeur d’un pointeur.Languages that do not support operator overloading or custom operators can use this method to add an offset to the value of a pointer.

S’applique à

Voir aussi