IntPtr.Add(IntPtr, Int32) Methode

Definitie

Hiermee voegt u een offset toe aan een ondertekend geheel getal.

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

Parameters

pointer
IntPtr

nativeint

Het ondertekende gehele getal waaraan de offset moet worden toegevoegd.

offset
Int32

De offset die moet worden toegevoegd.

Retouren

IntPtr

nativeint

Een nieuw geheel getal dat overeenkomt met de toevoeging van offsetpointer.

Voorbeelden

In het volgende voorbeeld wordt een IntPtr object geïnstitueert dat verwijst naar het begin van een matrix met tien elementen en wordt vervolgens de Add methode aangeroepen om de elementen in de matrix te herhalen.

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
#nowarn "9"
open System
open System.Runtime.InteropServices
open FSharp.NativeInterop

[<EntryPoint>]
let main _ =
    let mutable arr = 
        [| 2; 4; 6; 8; 10; 12; 14; 16; 18; 20 |]
    
    use parr = fixed arr
    
    let ptr = NativePtr.toNativeInt parr

    // Get the size of an array element.
    let size = sizeof<int>
    for i = 0 to arr.Length - 1 do
        let newPtr = IntPtr.Add(ptr, i * size)
        printf $"{Marshal.ReadInt32 newPtr}   "
    0

// 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

Opmerkingen

De Add methode genereert geen uitzondering als het resultaat te groot is om als een ondertekend geheel getal in het uitvoerproces weer te geven. In plaats daarvan wordt de optellenbewerking uitgevoerd in een niet-gecontroleerd context.

Talen die geen ondersteuning bieden voor overbelasting van operatoren of aangepaste operators, kunnen deze methode gebruiken om een offset toe te voegen aan de waarde van een aanwijzer.

Van toepassing op

Zie ook