Unsafe.Add 方法

定義

多載

Add<T>(Void*, Int32)

將專案位移新增至指定的 Unmanaged 指標。

Add<T>(T, Int32)

將位移加入至指定的Managed指標。

Add<T>(T, IntPtr)

將專案位移加入至指定的Managed指標。

Add<T>(T, UIntPtr)

將專案位移加入至指定的Managed指標。

Add<T>(Void*, Int32)

來源:
Unsafe.cs
來源:
Unsafe.cs
來源:
Unsafe.cs

重要

此 API 不符合 CLS 規範。

將專案位移新增至指定的 Unmanaged 指標。

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

類型參數

T

其大小將做為 的縮放比例的類型 elementOffset

參數

source
Void*

要加入位移的 Unmanaged 指標。

elementOffset
Int32

要加上的位移。

傳回

Void*

新的 Unmanaged 指標,反映將指定的位移新增至來源指標。

屬性

備註

參數elementOffset是要加入至source指標 (非) 位元組 (大小元素的數目T。 例如,假設來源指標 ptr,呼叫 Unsafe.Add<int>(ptr, 20) 會傳回新的指標,其位址點為 80 個字節, (= 20 個元素 * 每個元素 4 個字節,) ptr 以外。

如果 elementOffset 是計算值,而不是硬式編碼常值,呼叫端應該考慮整數溢位的可能性。 例如,在呼叫 中,呼叫 Unsafe.Add<int>(ptr, a * b)端必須確保中繼值 a * b 不會溢位 的 Int32界限。

適用於

.NET 10 和其他版本
產品 版本
.NET Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Standard 2.0 (package-provided)

Add<T>(T, Int32)

來源:
Unsafe.cs
來源:
Unsafe.cs
來源:
Unsafe.cs

將位移加入至指定的Managed指標。

C#
public static ref T Add<T>(ref T source, int elementOffset);

類型參數

T

Managed 指標的元素類型。

參數

source
T

要加入位移的Managed指標。

elementOffset
Int32

要加上的位移。

傳回

T

新的 Managed 指標,反映將指定的位移新增至來源指標。

備註

參數elementOffset是要加入至source指標 (非) 位元組 (大小元素的數目T。 例如,假設有類型的ref int來源指標 ptr,呼叫Unsafe.Add<int>(ref ptr, 20)會傳回新的指標,其位址點為 80 個字節, (= 20 個元素 * 每個元素 4 個字節,) ptr 以外。

如果 elementOffset 是計算值,而不是硬式編碼常值,呼叫端應該考慮整數溢位的可能性。 例如,在呼叫 中,呼叫 Unsafe.Add<int>(ref ptr, a * b)端必須確保中繼值 a * b 不會溢位 的 Int32界限。

適用於

.NET 10 和其他版本
產品 版本
.NET Core 1.1, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Standard 2.0 (package-provided)

Add<T>(T, IntPtr)

來源:
Unsafe.cs
來源:
Unsafe.cs
來源:
Unsafe.cs

將專案位移加入至指定的Managed指標。

C#
public static ref T Add<T>(ref T source, IntPtr elementOffset);

類型參數

T

Managed 指標的元素類型。

參數

source
T

要加入位移的Managed指標。

elementOffset
IntPtr

要加上的位移。

傳回

T

新的 Managed 指標,反映將指定的位移新增至來源指標。

備註

參數elementOffset是要加入至source指標 (非) 位元組 (大小元素的數目T。 例如,假設有類型的ref int來源指標 ptr,呼叫Unsafe.Add<int>(ref ptr, (nint)20)會傳回新的指標,其位址點為 80 個字節, (= 20 個元素 * 每個元素 4 個字節,) ptr 以外。

如果 elementOffset 是計算值,而不是硬式編碼常值,呼叫端應該考慮整數溢位的可能性。 例如,在呼叫 中,呼叫 Unsafe.Add<int>(ref ptr, a * b)端必須確保中繼值 a * b 不會溢位 的 IntPtr界限。

適用於

.NET 10 和其他版本
產品 版本
.NET Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Standard 2.0 (package-provided)

Add<T>(T, UIntPtr)

來源:
Unsafe.cs
來源:
Unsafe.cs
來源:
Unsafe.cs

重要

此 API 不符合 CLS 規範。

將專案位移加入至指定的Managed指標。

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

類型參數

T

Managed 指標的元素類型。

參數

source
T

要加入位移的Managed指標。

elementOffset

nuint

要加上的位移。

傳回

T

新的 Managed 指標,反映將指定的位移新增至來源指標。

屬性

備註

參數elementOffset是要加入至source指標 (非) 位元組 (大小元素的數目T。 例如,假設有類型的ref int來源指標 ptr,呼叫Unsafe.Add<int>(ref ptr, (nuint)20)會傳回新的指標,其位址點為 80 個字節, (= 20 個元素 * 每個元素 4 個字節,) ptr 以外。

如果 elementOffset 是計算值,而不是硬式編碼常值,呼叫端應該考慮整數溢位的可能性。 例如,在呼叫 中,呼叫 Unsafe.Add<int>(ref ptr, a * b)端必須確保中繼值 a * b 不會溢位 的 UIntPtr界限。

適用於

.NET 10 和其他版本
產品 版本
.NET 6, 7, 8, 9, 10
.NET Standard 2.0 (package-provided)