Unsafe.Subtract Méthode

Définition

Surcharges

Subtract<T>(Void*, Int32)

Soustrait un décalage d’élément du pointeur non managé donné.

Subtract<T>(T, Int32)

Soustrait un décalage du pointeur managé donné.

Subtract<T>(T, IntPtr)

Soustrait un décalage d’élément du pointeur managé donné.

Subtract<T>(T, UIntPtr)

Soustrait un décalage d’élément du pointeur managé donné.

Subtract<T>(Void*, Int32)

Source:
Unsafe.cs
Source:
Unsafe.cs
Source:
Unsafe.cs

Important

Cette API n’est pas conforme CLS.

Soustrait un décalage d’élément du pointeur non managé donné.

public static void* Subtract<T> (void* source, int elementOffset);
[System.CLSCompliant(false)]
public static void* Subtract<T> (void* source, int elementOffset);

Paramètres de type

T

Type dont la taille sera utilisée comme facteur d’échelle pour elementOffset.

Paramètres

source
Void*

Pointeur non managé à partir duquel soustraire le décalage.

elementOffset
Int32

Offset à soustraire.

Retours

Void*

Nouveau pointeur non managé qui reflète la soustraction du décalage spécifié du pointeur source.

Attributs

Remarques

Le elementOffset paramètre correspond au nombre d’éléments de Ttaille (et non d’octets) à supprimer du source pointeur. Par exemple, avec un pointeur source ptr, l’appel Unsafe.Subtract<int>(ptr, 20) retourne un nouveau pointeur dont l’adresse pointe 80 octets (= 20 éléments * 4 octets par élément) avant ptr.

Si elementOffset est une valeur calculée plutôt qu’un littéral codé en dur, les appelants doivent envisager la possibilité d’un dépassement d’entier. Par exemple, dans l’appel Unsafe.Subtract<int>(ptr, a * b), l’appelant doit s’assurer que la valeur a * b intermédiaire ne dépasse pas les limites de Int32.

S’applique à

.NET 9 et autres versions
Produit Versions
.NET Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 4.7 (package-provided), 4.7.1 (package-provided), 4.7.2 (package-provided), 4.8 (package-provided)
.NET Standard 2.0 (package-provided)

Subtract<T>(T, Int32)

Source:
Unsafe.cs
Source:
Unsafe.cs
Source:
Unsafe.cs

Soustrait un décalage du pointeur managé donné.

public static ref T Subtract<T> (ref T source, int elementOffset);

Paramètres de type

T

Type élément du pointeur managé.

Paramètres

source
T

Pointeur managé à partir duquel soustraire le décalage.

elementOffset
Int32

Offset à soustraire.

Retours

T

Nouveau pointeur managé qui reflète la soustraction du décalage spécifié du pointeur source.

Remarques

Le elementOffset paramètre est le nombre d’éléments de Ttaille (et non d’octets) à soustraire du source pointeur. Par exemple, étant donné un pointeur source ptr de type ref int, l’appel Unsafe.Subtract<int>(ref ptr, 20) retourne un nouveau pointeur dont l’adresse pointe 80 octets (= 20 éléments * 4 octets par élément) avant ptr.

Si elementOffset est une valeur calculée plutôt qu’un littéral codé en dur, les appelants doivent envisager la possibilité d’un dépassement d’entier. Par exemple, dans l’appel Unsafe.Subtract<int>(ref ptr, a * b), l’appelant doit s’assurer que la valeur a * b intermédiaire ne dépasse pas les limites de Int32.

S’applique à

.NET 9 et autres versions
Produit Versions
.NET Core 1.1, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 4.7 (package-provided), 4.7.1 (package-provided), 4.7.2 (package-provided), 4.8 (package-provided)
.NET Standard 2.0 (package-provided)

Subtract<T>(T, IntPtr)

Source:
Unsafe.cs
Source:
Unsafe.cs
Source:
Unsafe.cs

Soustrait un décalage d’élément du pointeur managé donné.

public static ref T Subtract<T> (ref T source, IntPtr elementOffset);

Paramètres de type

T

Type élément du pointeur managé.

Paramètres

source
T

Pointeur managé à partir duquel soustraire le décalage.

elementOffset
IntPtr

Offset à soustraire.

Retours

T

Nouveau pointeur managé qui reflète la soustraction du décalage spécifié du pointeur source.

Remarques

Le elementOffset paramètre est le nombre d’éléments de Ttaille (et non d’octets) à soustraire du source pointeur. Par exemple, étant donné un pointeur source ptr de type ref int, l’appel Unsafe.Subtract<int>(ref ptr, (nint)20) retourne un nouveau pointeur dont l’adresse pointe 80 octets (= 20 éléments * 4 octets par élément) avant ptr.

Si elementOffset est une valeur calculée plutôt qu’un littéral codé en dur, les appelants doivent envisager la possibilité d’un dépassement d’entier. Par exemple, dans l’appel Unsafe.Subtract<int>(ref ptr, a * b), l’appelant doit s’assurer que la valeur a * b intermédiaire ne dépasse pas les limites de IntPtr.

S’applique à

.NET 9 et autres versions
Produit Versions
.NET Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 4.7 (package-provided), 4.7.1 (package-provided), 4.7.2 (package-provided), 4.8 (package-provided)
.NET Standard 2.0 (package-provided)

Subtract<T>(T, UIntPtr)

Source:
Unsafe.cs
Source:
Unsafe.cs
Source:
Unsafe.cs

Important

Cette API n’est pas conforme CLS.

Soustrait un décalage d’élément du pointeur managé donné.

public static ref T Subtract<T> (ref T source, nuint elementOffset);
[System.CLSCompliant(false)]
public static ref T Subtract<T> (ref T source, UIntPtr elementOffset);

Paramètres de type

T

Type élément du pointeur managé.

Paramètres

source
T

Pointeur managé à partir duquel soustraire le décalage.

elementOffset

nuint

Offset à soustraire.

Retours

T

Nouveau pointeur managé qui reflète la soustraction du décalage spécifié du pointeur source.

Attributs

Remarques

Le elementOffset paramètre est le nombre d’éléments de Ttaille (et non d’octets) à soustraire du source pointeur. Par exemple, étant donné un pointeur source ptr de type ref int, l’appel Unsafe.Subtract<int>(ref ptr, (nuint)20) retourne un nouveau pointeur dont l’adresse pointe 80 octets (= 20 éléments * 4 octets par élément) avant ptr.

Si elementOffset est une valeur calculée plutôt qu’un littéral codé en dur, les appelants doivent envisager la possibilité d’un dépassement d’entier. Par exemple, dans l’appel Unsafe.Subtract<int>(ref ptr, a * b), l’appelant doit s’assurer que la valeur a * b intermédiaire ne dépasse pas les limites de UIntPtr.

S’applique à

.NET 9 et autres versions
Produit Versions
.NET 6, 7, 8, 9
.NET Framework 4.7 (package-provided), 4.7.1 (package-provided), 4.7.2 (package-provided), 4.8 (package-provided)
.NET Standard 2.0 (package-provided)