IntPtr.Addition(IntPtr, Int32) Operator

Definition

Lägger till en förskjutning i ett signerat heltal.

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

Parametrar

pointer
IntPtr

nativeint

Det signerade heltal som förskjutningen ska läggas till i.

offset
Int32

Förskjutningen som ska läggas till.

Returer

IntPtr

nativeint

Ett nytt signerat heltal som återspeglar tillägget av offset till pointer.

Kommentarer

Metoden Addition definierar tilläggsåtgärden för IntPtr objekt. Den aktiverar kod, till exempel följande.

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

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

    let ptr = NativePtr.toNativeInt parr

    for i = 0 to arr.Length - 1 do
        let newPtr = ptr + nativeint i * nativeint sizeof<int>
        printf $"{Marshal.ReadInt32 newPtr}   "
    0

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

Språk som inte stöder anpassade operatorer kan anropa Add metoden i stället.

Additionsåtgärden utlöser inget undantag om resultatet är för stort för att representeras som ett signerat heltal i körningsprocessen. I stället utförs den i en omarkerad kontext.

I C# från version 11 och när du riktar in dig på .NET 7 eller senare körning är det här API:et endast tillgängligt via reflektion. Additionsoperatorn identifieras direkt av språket och följer det normala språkbeteendet för tilläggsåtgärder, inklusive spill i en checked kontext om resultatet är för stort för att representera.

Motsvarande metod för den här operatorn är IntPtr.Add(IntPtr, Int32)

Gäller för

Se även