IntPtr.Addition(IntPtr, Int32) Operátor

Definice

Přidá posun do podepsaného celého čísla.

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

Parametry

pointer
IntPtr

nativeint

Celé číslo podepsaného pro přidání posunu.

offset
Int32

Posun, který chcete přidat.

Návraty

IntPtr

nativeint

Nové podepsané celé číslo, které odráží přidání do offset pointer.

Poznámky

Metoda Addition definuje operaci sčítání objektů IntPtr . Povolí kód, například následující.

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

Jazyky, které nepodporují vlastní operátory, mohou místo toho metodu Add volat.

Operace sčítání nevyvolá výjimku, pokud je výsledek příliš velký, aby představoval jako celé číslo podepsaného v procesu provádění. Místo toho se provádí v nezaškrtnutém kontextu.

V jazyce C# od verze 11 a při cílení na modul runtime .NET 7 nebo novější je toto rozhraní API přístupné jenom prostřednictvím reflexe. Operátor sčítání je přímo rozpoznán jazykem a bude dodržovat normální chování jazyka pro operace sčítání, včetně přetečení v checked kontextu, pokud je výsledek příliš velký, aby představoval.

Ekvivalentní metoda tohoto operátoru je IntPtr.Add(IntPtr, Int32)

Platí pro

Viz také