IntPtr.Addition(IntPtr, Int32) Operator
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
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
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)