UIntPtr.Subtract(UIntPtr, Int32) Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Resta un desplazamiento de un entero sin signo.
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
Parámetros
- pointer
-
UIntPtr
unativeint
Entero sin signo del que se va a restar el desplazamiento.
- offset
- Int32
Desplazamiento que se va a restar.
Devoluciones
-
UIntPtr
unativeint
Entero sin signo nuevo que refleja la resta de offset
de pointer
.
Ejemplos
En el ejemplo siguiente se crea una instancia de un IntPtr objeto que apunta al final de una matriz de diez elementos y, a continuación, se llama al Subtract método para iterar los elementos de la matriz en orden inverso.
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
Comentarios
El Subtract método no produce una excepción si el resultado es demasiado pequeño para representarlo como un entero sin signo en el proceso de ejecución. En su lugar, la operación de resta se realiza en un contexto no comprobado.
Los lenguajes que no admiten la sobrecarga del operador o los operadores personalizados pueden usar este método para restar un desplazamiento del valor de un puntero.