Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

IntPtr.Subtract-Methode: (IntPtr, Int32)

.NET Framework (current version)
 

Veröffentlicht: Oktober 2016

Subtrahiert einen Offset vom Wert eines Zeigers.

Namespace:   System
Assembly:  mscorlib (in mscorlib.dll)

public static IntPtr Subtract(
	IntPtr pointer,
	int offset
)

Parameter

pointer
Type: System.IntPtr

Der Zeiger, von dem der Offset subtrahiert werden soll.

offset
Type: System.Int32

Der Offset, der subtrahiert werden soll.

Rückgabewert

Type: System.IntPtr

Ein neuer Zeiger, der die Subtraktion von offset von pointer widerspiegelt.

Die Subtract -Methode löst keine Ausnahme aus, wenn das Ergebnis zu klein, um als Zeiger auf der angegebenen Plattform dargestellt ist. Stattdessen wird die Subtraktion in einem nicht geprüften Kontext ausgeführt.

Sprachen, die Überladen von Operatoren oder benutzerdefinierte Operatoren nicht unterstützen, können diese Methode verwenden, subtrahiert einen Offset vom Wert eines Zeigers.

Im folgenden Beispiel wird ein IntPtr -Objekt, das am Ende ein Array mit 10 Elementen verweist, und ruft dann die Subtract Methode, um die Elemente im Array in umgekehrter Reihenfolge zu durchlaufen.

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};
      // Get the size of a single array element.
      int size = sizeof(int);
      unsafe {
         fixed(int* pend = &arr[arr.GetUpperBound(0)]) {
            IntPtr ptr = new IntPtr(pend);
            for (int ctr = 0; ctr < arr.Length; ctr++)
            {
               IntPtr newPtr = IntPtr.Subtract(ptr, ctr * size);
               Console.Write("{0}   ", Marshal.ReadInt32(newPtr));
            }
         }
      }
   }
}
// The example displays the following output:
//       20   18   16   14   12   10   8   6   4   2

Universelle Windows-Plattform
Verfügbar seit 8
.NET Framework
Verfügbar seit 4.0
Portierbare Klassenbibliothek
Unterstützt in: portierbare .NET-Plattformen
Windows Phone Silverlight
Verfügbar seit 8.0
Windows Phone
Verfügbar seit 8.1
Zurück zum Anfang
Anzeigen: