Бөлісу құралы:


UIntPtr.Subtract(UIntPtr, Int32) Метод

Определение

Вычитает смещение из целого числа без знака.

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

unativeint

Целое число без знака для вычитания смещения.

offset
Int32

Вычитаемое смещение.

Возвращаемое значение

UIntPtr

unativeint

Новое целое число без знака, отражающее вычитание offset из pointer.

Примеры

В следующем примере создается IntPtr экземпляр объекта, который указывает на конец массива десяти элементов, а затем вызывает Subtract метод для итерации элементов в массиве в обратном порядке.

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
open System

let arr = [| 1; 2; 3; 4; 5; 6; 7; 8; 9; 10 |]
let ptr = UIntPtr(uint arr[arr.GetUpperBound 0])
for i = 0 to arr.GetUpperBound 0 do
    let newPtr = UIntPtr.Subtract(ptr, i)
    printf $"{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 не создает исключение, если результат слишком мал для представления в виде целого числа без знака в выполняемом процессе. Вместо этого операция вычитания выполняется в незаверяемом контексте.

Языки, не поддерживающие перегрузку операторов или пользовательские операторы, могут использовать этот метод для вычитания смещения от значения указателя.

Применяется к

См. также раздел