IntPtr.Addition(IntPtr, Int32) Operátor
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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)