UIntPtr.Subtract(UIntPtr, Int32) UIntPtr.Subtract(UIntPtr, Int32) UIntPtr.Subtract(UIntPtr, Int32) UIntPtr.Subtract(UIntPtr, Int32) Method

定義

符号なしポインターの値からオフセットを減算します。Subtracts an offset from the value of an unsigned pointer.

public:
 static UIntPtr Subtract(UIntPtr pointer, int offset);
public static UIntPtr Subtract (UIntPtr pointer, int offset);
static member Subtract : unativeint * int -> unativeint
Public Shared Function Subtract (pointer As UIntPtr, offset As Integer) As UIntPtr

パラメーター

pointer
UIntPtr UIntPtr UIntPtr UIntPtr

オフセットを減算する符号なしポインター。The unsigned pointer to subtract the offset from.

offset
Int32 Int32 Int32 Int32

減算するオフセット。The offset to subtract.

戻り値

offset からの pointer の減算が反映された新しい符号なしポインター。A new unsigned pointer that reflects the subtraction of offset from pointer.

次の例ではIntPtr 、10要素の配列の末尾を指すオブジェクトをインスタンス化し、 Subtractメソッドを呼び出して、配列内の要素を逆順に反復処理します。The following example instantiates an IntPtr object that points to the end of a ten-element array, and then calls the Subtract method to iterate the elements in the array in reverse order.

using System;

public class Example
{
   public static void Main()
   {
      int[] arr = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
      UIntPtr ptr = (UIntPtr) arr[arr.GetUpperBound(0)];
      for (int ctr = 0; ctr <= arr.GetUpperBound(0); ctr++)
      {
         UIntPtr newPtr = UIntPtr.Subtract(ptr, ctr);
         Console.Write("{0}   ", newPtr);
      }
   }
}
// The example displays the following output:
//       10   9   8   7   6   5   4   3   2   1
Module Example
   Public Sub Main()
      Dim arr() As Integer = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
      Dim ptr As UIntPtr = CType(arr(arr.GetUpperBound(0)), UIntPtr)
      For ctr As Integer= 0 To arr.GetUpperBound(0)
         Dim newPtr As UIntPtr = UIntPtr.Subtract(ptr, ctr)
         Console.Write("{0}   ", newPtr)
      Next
   End Sub
End Module
' The example displays the following output:
'       10   9   8   7   6   5   4   3   2   1

注釈

結果Subtractが小さすぎて、指定されたプラットフォーム上のポインターとして表現できない場合、メソッドは例外をスローしません。The Subtract method does not throw an exception if the result is too small to represent as a pointer on the specified platform. 代わりに、減算操作は unchecked コンテキストで実行されます。Instead, the subtraction operation is performed in an unchecked context.

演算子のオーバーロードまたはカスタム演算子をサポートしない言語では、このメソッドを使用して、符号なしポインターの値からオフセットを減算できます。Languages that do not support operator overloading or custom operators can use this method to subtract an offset from the value of an unsigned pointer.

適用対象

こちらもご覧ください