IntPtr.Addition(IntPtr, Int32) Operator

Definition

为指针值添加偏移量。Adds an offset to the value of a pointer.

public:
 static IntPtr operator +(IntPtr pointer, int offset);
public static IntPtr operator + (IntPtr pointer, int offset);
static member ( + ) : nativeint * int -> nativeint
Public Shared Operator + (pointer As IntPtr, offset As Integer) As IntPtr

Parameters

pointer
IntPtr

要为其增加偏移量的指针。The pointer to add the offset to.

offset
Int32

要增加的偏移量。The offset to add.

Returns

IntPtr

反映为 offset 增加 pointer 的新指针。A new pointer that reflects the addition of offset to pointer.

Remarks

Addition 方法定义 IntPtr 对象的加法运算。The Addition method defines the addition operation for IntPtr objects. 它可以实现如下所示的代码。It enables code such as the following.

int[] arr = {2, 4, 6, 8, 10, 12, 14, 16, 18, 20 };
unsafe {
   fixed(int* parr = arr)
   {
       IntPtr ptr = new IntPtr(parr);
       for (int ctr = 0; ctr < arr.Length; ctr++)
       {
          IntPtr newPtr = ptr + ctr * sizeof(Int32);
          Console.Write("{0}   ", Marshal.ReadInt32(newPtr));
       }
   }
}
// The example displays the following output:
//       2   4   6   8   10   12   14   16   18   20
Dim arr() As Integer = {2, 4, 6, 8, 10, 12, 14, 16, 18, 20 }
Dim ptr As IntPtr = Marshal.UnsafeAddrOfPinnedArrayElement(arr, 0)
For ctr As Integer = 0 To arr.Length - 1
   Dim newPtr As IntPtr = ptr + ctr * Len(arr(0))
   Console.WriteLine("{0}   ", Marshal.ReadInt32(newPtr))
Next
' The example displays the following output:
'       2   4   6   8   10   12   14   16   18   20

不支持自定义运算符的语言可以改为调用 Add 方法。Languages that do not support custom operators can call the Add method instead.

如果结果太大而无法表示为指定平台上的指针,则加法运算不会引发异常。The addition operation does not throw an exception if the result is too large to represent as a pointer on the specified platform. 相反,它是在未检查的上下文中执行的。Instead, it is performed in an unchecked context.

此运算符的等效方法是 IntPtr.Add(IntPtr, Int32)The equivalent method for this operator is IntPtr.Add(IntPtr, Int32)

Applies to

See also