Поделиться через


Unsafe.Subtract Метод

Определение

Перегрузки

Subtract<T>(Void*, Int32)

Вычитает смещение элемента из заданного неуправляемого указателя.

Subtract<T>(T, Int32)

Вычитает смещение из заданного управляемого указателя.

Subtract<T>(T, IntPtr)

Вычитает смещение элемента из заданного управляемого указателя.

Subtract<T>(T, UIntPtr)

Вычитает смещение элемента из заданного управляемого указателя.

Subtract<T>(Void*, Int32)

Исходный код:
Unsafe.cs
Исходный код:
Unsafe.cs
Исходный код:
Unsafe.cs

Важно!

Этот API несовместим с CLS.

Вычитает смещение элемента из заданного неуправляемого указателя.

public:
generic <typename T>
 static void* Subtract(void* source, int elementOffset);
public static void* Subtract<T> (void* source, int elementOffset);
[System.CLSCompliant(false)]
public static void* Subtract<T> (void* source, int elementOffset);
static member Subtract : nativeptr<unit> * int -> nativeptr<unit>
[<System.CLSCompliant(false)>]
static member Subtract : nativeptr<unit> * int -> nativeptr<unit>

Параметры типа

T

Тип, размер которого будет использоваться в качестве коэффициента масштабирования для elementOffset.

Параметры

source
Void*

Неуправляемый указатель, из который вычитается смещение.

elementOffset
Int32

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

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

Void*

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

Атрибуты

Комментарии

Параметр elementOffset — это количество Tэлементов размера (а не байтов), удаляемых из указателя source . Например, при использовании исходного указателя ptr вызов Unsafe.Subtract<int>(ptr, 20) вернет новый указатель, адрес которого указывает 80 байт (= 20 элементов * 4 байта на элемент) перед ptr.

Если elementOffset является вычисляемым значением, а не жестко заданным литералом, вызывающим абонентам следует учитывать возможность переполнения целочисленного числа. Например, в вызове Unsafe.Subtract<int>(ptr, a * b)вызывающий объект должен убедиться, что промежуточное значение a * b не переполняет границы Int32.

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

Subtract<T>(T, Int32)

Исходный код:
Unsafe.cs
Исходный код:
Unsafe.cs
Исходный код:
Unsafe.cs

Вычитает смещение из заданного управляемого указателя.

public:
generic <typename T>
 static T % Subtract(T % source, int elementOffset);
public static ref T Subtract<T> (ref T source, int elementOffset);
static member Subtract : 'T * int -> 'T
Public Shared Function Subtract(Of T) (ByRef source As T, elementOffset As Integer) As T

Параметры типа

T

Элементный тип управляемого указателя.

Параметры

source
T

Управляемый указатель, из который вычитается смещение.

elementOffset
Int32

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

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

T

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

Комментарии

Параметр elementOffset — это количество Tэлементов размера (а не байтов), вычитаемых из указателя source . Например, если указать исходный указатель ptr типа ref int, вызов Unsafe.Subtract<int>(ref ptr, 20) вернет новый указатель, адрес которого указывает 80 байт (= 20 элементов * 4 байта на элемент) перед ptr.

Если elementOffset является вычисляемым значением, а не жестко заданным литералом, вызывающим абонентам следует учитывать возможность переполнения целочисленного числа. Например, в вызове Unsafe.Subtract<int>(ref ptr, a * b)вызывающий объект должен убедиться, что промежуточное значение a * b не переполняет границы Int32.

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

Subtract<T>(T, IntPtr)

Исходный код:
Unsafe.cs
Исходный код:
Unsafe.cs
Исходный код:
Unsafe.cs

Вычитает смещение элемента из заданного управляемого указателя.

public:
generic <typename T>
 static T % Subtract(T % source, IntPtr elementOffset);
public static ref T Subtract<T> (ref T source, IntPtr elementOffset);
static member Subtract : 'T * nativeint -> 'T
Public Shared Function Subtract(Of T) (ByRef source As T, elementOffset As IntPtr) As T

Параметры типа

T

Элементный тип управляемого указателя.

Параметры

source
T

Управляемый указатель, из который вычитается смещение.

elementOffset
IntPtr

nativeint

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

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

T

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

Комментарии

Параметр elementOffset — это количество Tэлементов размера (а не байтов), вычитаемых из указателя source . Например, если указать исходный указатель ptr типа ref int, вызов Unsafe.Subtract<int>(ref ptr, (nint)20) вернет новый указатель, адрес которого указывает 80 байт (= 20 элементов * 4 байта на элемент) перед ptr.

Если elementOffset является вычисляемым значением, а не жестко заданным литералом, вызывающим абонентам следует учитывать возможность переполнения целочисленного числа. Например, в вызове Unsafe.Subtract<int>(ref ptr, a * b)вызывающий объект должен убедиться, что промежуточное значение a * b не переполняет границы IntPtr.

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

Subtract<T>(T, UIntPtr)

Исходный код:
Unsafe.cs
Исходный код:
Unsafe.cs
Исходный код:
Unsafe.cs

Важно!

Этот API несовместим с CLS.

Вычитает смещение элемента из заданного управляемого указателя.

public:
generic <typename T>
 static T % Subtract(T % source, UIntPtr elementOffset);
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);
static member Subtract : 'T * unativeint -> 'T
[<System.CLSCompliant(false)>]
static member Subtract : 'T * unativeint -> 'T
Public Shared Function Subtract(Of T) (ByRef source As T, elementOffset As UIntPtr) As T

Параметры типа

T

Элементный тип управляемого указателя.

Параметры

source
T

Управляемый указатель, из который вычитается смещение.

elementOffset
UIntPtr

nuint

unativeint

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

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

T

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

Атрибуты

Комментарии

Параметр elementOffset — это количество Tэлементов размера (а не байтов), вычитаемых из указателя source . Например, если указать исходный указатель ptr типа ref int, вызов Unsafe.Subtract<int>(ref ptr, (nuint)20) вернет новый указатель, адрес которого указывает 80 байт (= 20 элементов * 4 байта на элемент) перед ptr.

Если elementOffset является вычисляемым значением, а не жестко заданным литералом, вызывающим абонентам следует учитывать возможность переполнения целочисленного числа. Например, в вызове Unsafe.Subtract<int>(ref ptr, a * b)вызывающий объект должен убедиться, что промежуточное значение a * b не переполняет границы UIntPtr.

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