Bagikan melalui


IntPtr Struktur

Definisi

Mewakili bilangan bulat bertanda tangan di mana lebar bit sama dengan penunjuk.

public value class IntPtr
public value class IntPtr : IComparable, IComparable<IntPtr>, IEquatable<IntPtr>, IFormattable, System::Runtime::Serialization::ISerializable
public value class IntPtr : IComparable, IComparable<IntPtr>, IEquatable<IntPtr>, ISpanFormattable, System::Runtime::Serialization::ISerializable
public value class IntPtr : IComparable<IntPtr>, IEquatable<IntPtr>, IParsable<IntPtr>, ISpanParsable<IntPtr>, System::Numerics::IAdditionOperators<IntPtr, IntPtr, IntPtr>, System::Numerics::IAdditiveIdentity<IntPtr, IntPtr>, System::Numerics::IBinaryInteger<IntPtr>, System::Numerics::IBinaryNumber<IntPtr>, System::Numerics::IBitwiseOperators<IntPtr, IntPtr, IntPtr>, System::Numerics::IComparisonOperators<IntPtr, IntPtr, bool>, System::Numerics::IDecrementOperators<IntPtr>, System::Numerics::IDivisionOperators<IntPtr, IntPtr, IntPtr>, System::Numerics::IEqualityOperators<IntPtr, IntPtr, bool>, System::Numerics::IIncrementOperators<IntPtr>, System::Numerics::IMinMaxValue<IntPtr>, System::Numerics::IModulusOperators<IntPtr, IntPtr, IntPtr>, System::Numerics::IMultiplicativeIdentity<IntPtr, IntPtr>, System::Numerics::IMultiplyOperators<IntPtr, IntPtr, IntPtr>, System::Numerics::INumber<IntPtr>, System::Numerics::INumberBase<IntPtr>, System::Numerics::IShiftOperators<IntPtr, int, IntPtr>, System::Numerics::ISignedNumber<IntPtr>, System::Numerics::ISubtractionOperators<IntPtr, IntPtr, IntPtr>, System::Numerics::IUnaryNegationOperators<IntPtr, IntPtr>, System::Numerics::IUnaryPlusOperators<IntPtr, IntPtr>, System::Runtime::Serialization::ISerializable
public value class IntPtr : IComparable<IntPtr>, IEquatable<IntPtr>, IParsable<IntPtr>, ISpanParsable<IntPtr>, IUtf8SpanParsable<IntPtr>, System::Numerics::IAdditionOperators<IntPtr, IntPtr, IntPtr>, System::Numerics::IAdditiveIdentity<IntPtr, IntPtr>, System::Numerics::IBinaryInteger<IntPtr>, System::Numerics::IBinaryNumber<IntPtr>, System::Numerics::IBitwiseOperators<IntPtr, IntPtr, IntPtr>, System::Numerics::IComparisonOperators<IntPtr, IntPtr, bool>, System::Numerics::IDecrementOperators<IntPtr>, System::Numerics::IDivisionOperators<IntPtr, IntPtr, IntPtr>, System::Numerics::IEqualityOperators<IntPtr, IntPtr, bool>, System::Numerics::IIncrementOperators<IntPtr>, System::Numerics::IMinMaxValue<IntPtr>, System::Numerics::IModulusOperators<IntPtr, IntPtr, IntPtr>, System::Numerics::IMultiplicativeIdentity<IntPtr, IntPtr>, System::Numerics::IMultiplyOperators<IntPtr, IntPtr, IntPtr>, System::Numerics::INumber<IntPtr>, System::Numerics::INumberBase<IntPtr>, System::Numerics::IShiftOperators<IntPtr, int, IntPtr>, System::Numerics::ISignedNumber<IntPtr>, System::Numerics::ISubtractionOperators<IntPtr, IntPtr, IntPtr>, System::Numerics::IUnaryNegationOperators<IntPtr, IntPtr>, System::Numerics::IUnaryPlusOperators<IntPtr, IntPtr>, System::Runtime::Serialization::ISerializable
public value class IntPtr : IEquatable<IntPtr>, System::Runtime::Serialization::ISerializable
public value class IntPtr : System::Runtime::Serialization::ISerializable
public struct IntPtr
public readonly struct IntPtr : IComparable, IComparable<IntPtr>, IEquatable<IntPtr>, IFormattable, System.Runtime.Serialization.ISerializable
public readonly struct IntPtr : IComparable, IComparable<IntPtr>, IEquatable<IntPtr>, ISpanFormattable, System.Runtime.Serialization.ISerializable
public readonly struct IntPtr : IComparable<IntPtr>, IEquatable<IntPtr>, IParsable<IntPtr>, ISpanParsable<IntPtr>, System.Numerics.IAdditionOperators<IntPtr,IntPtr,IntPtr>, System.Numerics.IAdditiveIdentity<IntPtr,IntPtr>, System.Numerics.IBinaryInteger<IntPtr>, System.Numerics.IBinaryNumber<IntPtr>, System.Numerics.IBitwiseOperators<IntPtr,IntPtr,IntPtr>, System.Numerics.IComparisonOperators<IntPtr,IntPtr,bool>, System.Numerics.IDecrementOperators<IntPtr>, System.Numerics.IDivisionOperators<IntPtr,IntPtr,IntPtr>, System.Numerics.IEqualityOperators<IntPtr,IntPtr,bool>, System.Numerics.IIncrementOperators<IntPtr>, System.Numerics.IMinMaxValue<IntPtr>, System.Numerics.IModulusOperators<IntPtr,IntPtr,IntPtr>, System.Numerics.IMultiplicativeIdentity<IntPtr,IntPtr>, System.Numerics.IMultiplyOperators<IntPtr,IntPtr,IntPtr>, System.Numerics.INumber<IntPtr>, System.Numerics.INumberBase<IntPtr>, System.Numerics.IShiftOperators<IntPtr,int,IntPtr>, System.Numerics.ISignedNumber<IntPtr>, System.Numerics.ISubtractionOperators<IntPtr,IntPtr,IntPtr>, System.Numerics.IUnaryNegationOperators<IntPtr,IntPtr>, System.Numerics.IUnaryPlusOperators<IntPtr,IntPtr>, System.Runtime.Serialization.ISerializable
public readonly struct IntPtr : IComparable<IntPtr>, IEquatable<IntPtr>, IParsable<IntPtr>, ISpanParsable<IntPtr>, IUtf8SpanParsable<IntPtr>, System.Numerics.IAdditionOperators<IntPtr,IntPtr,IntPtr>, System.Numerics.IAdditiveIdentity<IntPtr,IntPtr>, System.Numerics.IBinaryInteger<IntPtr>, System.Numerics.IBinaryNumber<IntPtr>, System.Numerics.IBitwiseOperators<IntPtr,IntPtr,IntPtr>, System.Numerics.IComparisonOperators<IntPtr,IntPtr,bool>, System.Numerics.IDecrementOperators<IntPtr>, System.Numerics.IDivisionOperators<IntPtr,IntPtr,IntPtr>, System.Numerics.IEqualityOperators<IntPtr,IntPtr,bool>, System.Numerics.IIncrementOperators<IntPtr>, System.Numerics.IMinMaxValue<IntPtr>, System.Numerics.IModulusOperators<IntPtr,IntPtr,IntPtr>, System.Numerics.IMultiplicativeIdentity<IntPtr,IntPtr>, System.Numerics.IMultiplyOperators<IntPtr,IntPtr,IntPtr>, System.Numerics.INumber<IntPtr>, System.Numerics.INumberBase<IntPtr>, System.Numerics.IShiftOperators<IntPtr,int,IntPtr>, System.Numerics.ISignedNumber<IntPtr>, System.Numerics.ISubtractionOperators<IntPtr,IntPtr,IntPtr>, System.Numerics.IUnaryNegationOperators<IntPtr,IntPtr>, System.Numerics.IUnaryPlusOperators<IntPtr,IntPtr>, System.Runtime.Serialization.ISerializable
public struct IntPtr : IEquatable<IntPtr>, System.Runtime.Serialization.ISerializable
public readonly struct IntPtr : IEquatable<IntPtr>, System.Runtime.Serialization.ISerializable
[System.Serializable]
public struct IntPtr : System.Runtime.Serialization.ISerializable
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public struct IntPtr : System.Runtime.Serialization.ISerializable
public struct IntPtr : System.Runtime.Serialization.ISerializable
type nativeint = struct
type nativeint = struct
    interface IFormattable
    interface ISerializable
type nativeint = struct
    interface ISpanFormattable
    interface IFormattable
    interface ISerializable
type nativeint = struct
    interface IFormattable
    interface IParsable<nativeint>
    interface ISpanFormattable
    interface ISpanParsable<nativeint>
    interface IAdditionOperators<nativeint, nativeint, nativeint>
    interface IAdditiveIdentity<nativeint, nativeint>
    interface IBinaryInteger<nativeint>
    interface IBinaryNumber<nativeint>
    interface IBitwiseOperators<nativeint, nativeint, nativeint>
    interface IComparisonOperators<nativeint, nativeint, bool>
    interface IEqualityOperators<nativeint, nativeint, bool>
    interface IDecrementOperators<nativeint>
    interface IDivisionOperators<nativeint, nativeint, nativeint>
    interface IIncrementOperators<nativeint>
    interface IModulusOperators<nativeint, nativeint, nativeint>
    interface IMultiplicativeIdentity<nativeint, nativeint>
    interface IMultiplyOperators<nativeint, nativeint, nativeint>
    interface INumber<nativeint>
    interface INumberBase<nativeint>
    interface ISubtractionOperators<nativeint, nativeint, nativeint>
    interface IUnaryNegationOperators<nativeint, nativeint>
    interface IUnaryPlusOperators<nativeint, nativeint>
    interface IShiftOperators<nativeint, int, nativeint>
    interface IMinMaxValue<nativeint>
    interface ISignedNumber<nativeint>
    interface ISerializable
type nativeint = struct
    interface IFormattable
    interface IParsable<nativeint>
    interface ISpanFormattable
    interface ISpanParsable<nativeint>
    interface IAdditionOperators<nativeint, nativeint, nativeint>
    interface IAdditiveIdentity<nativeint, nativeint>
    interface IBinaryInteger<nativeint>
    interface IBinaryNumber<nativeint>
    interface IBitwiseOperators<nativeint, nativeint, nativeint>
    interface IComparisonOperators<nativeint, nativeint, bool>
    interface IEqualityOperators<nativeint, nativeint, bool>
    interface IDecrementOperators<nativeint>
    interface IDivisionOperators<nativeint, nativeint, nativeint>
    interface IIncrementOperators<nativeint>
    interface IModulusOperators<nativeint, nativeint, nativeint>
    interface IMultiplicativeIdentity<nativeint, nativeint>
    interface IMultiplyOperators<nativeint, nativeint, nativeint>
    interface INumber<nativeint>
    interface INumberBase<nativeint>
    interface ISubtractionOperators<nativeint, nativeint, nativeint>
    interface IUnaryNegationOperators<nativeint, nativeint>
    interface IUnaryPlusOperators<nativeint, nativeint>
    interface IUtf8SpanFormattable
    interface IUtf8SpanParsable<nativeint>
    interface IShiftOperators<nativeint, int, nativeint>
    interface IMinMaxValue<nativeint>
    interface ISignedNumber<nativeint>
    interface ISerializable
type nativeint = struct
    interface IFormattable
    interface IParsable<nativeint>
    interface ISpanFormattable
    interface ISpanParsable<nativeint>
    interface IUtf8SpanFormattable
    interface IUtf8SpanParsable<nativeint>
    interface IAdditionOperators<nativeint, nativeint, nativeint>
    interface IAdditiveIdentity<nativeint, nativeint>
    interface IBinaryInteger<nativeint>
    interface IBinaryNumber<nativeint>
    interface IBitwiseOperators<nativeint, nativeint, nativeint>
    interface IComparisonOperators<nativeint, nativeint, bool>
    interface IEqualityOperators<nativeint, nativeint, bool>
    interface IDecrementOperators<nativeint>
    interface IDivisionOperators<nativeint, nativeint, nativeint>
    interface IIncrementOperators<nativeint>
    interface IModulusOperators<nativeint, nativeint, nativeint>
    interface IMultiplicativeIdentity<nativeint, nativeint>
    interface IMultiplyOperators<nativeint, nativeint, nativeint>
    interface INumber<nativeint>
    interface INumberBase<nativeint>
    interface ISubtractionOperators<nativeint, nativeint, nativeint>
    interface IUnaryNegationOperators<nativeint, nativeint>
    interface IUnaryPlusOperators<nativeint, nativeint>
    interface IShiftOperators<nativeint, int, nativeint>
    interface IMinMaxValue<nativeint>
    interface ISignedNumber<nativeint>
    interface ISerializable
type nativeint = struct
    interface ISerializable
[<System.Serializable>]
type nativeint = struct
    interface ISerializable
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type nativeint = struct
    interface ISerializable
Public Structure IntPtr
Public Structure IntPtr
Implements IComparable, IComparable(Of IntPtr), IEquatable(Of IntPtr), IFormattable, ISerializable
Public Structure IntPtr
Implements IComparable, IComparable(Of IntPtr), IEquatable(Of IntPtr), ISerializable, ISpanFormattable
Public Structure IntPtr
Implements IAdditionOperators(Of IntPtr, IntPtr, IntPtr), IAdditiveIdentity(Of IntPtr, IntPtr), IBinaryInteger(Of IntPtr), IBinaryNumber(Of IntPtr), IBitwiseOperators(Of IntPtr, IntPtr, IntPtr), IComparable(Of IntPtr), IComparisonOperators(Of IntPtr, IntPtr, Boolean), IDecrementOperators(Of IntPtr), IDivisionOperators(Of IntPtr, IntPtr, IntPtr), IEqualityOperators(Of IntPtr, IntPtr, Boolean), IEquatable(Of IntPtr), IIncrementOperators(Of IntPtr), IMinMaxValue(Of IntPtr), IModulusOperators(Of IntPtr, IntPtr, IntPtr), IMultiplicativeIdentity(Of IntPtr, IntPtr), IMultiplyOperators(Of IntPtr, IntPtr, IntPtr), INumber(Of IntPtr), INumberBase(Of IntPtr), IParsable(Of IntPtr), ISerializable, IShiftOperators(Of IntPtr, Integer, IntPtr), ISignedNumber(Of IntPtr), ISpanParsable(Of IntPtr), ISubtractionOperators(Of IntPtr, IntPtr, IntPtr), IUnaryNegationOperators(Of IntPtr, IntPtr), IUnaryPlusOperators(Of IntPtr, IntPtr)
Public Structure IntPtr
Implements IAdditionOperators(Of IntPtr, IntPtr, IntPtr), IAdditiveIdentity(Of IntPtr, IntPtr), IBinaryInteger(Of IntPtr), IBinaryNumber(Of IntPtr), IBitwiseOperators(Of IntPtr, IntPtr, IntPtr), IComparable(Of IntPtr), IComparisonOperators(Of IntPtr, IntPtr, Boolean), IDecrementOperators(Of IntPtr), IDivisionOperators(Of IntPtr, IntPtr, IntPtr), IEqualityOperators(Of IntPtr, IntPtr, Boolean), IEquatable(Of IntPtr), IIncrementOperators(Of IntPtr), IMinMaxValue(Of IntPtr), IModulusOperators(Of IntPtr, IntPtr, IntPtr), IMultiplicativeIdentity(Of IntPtr, IntPtr), IMultiplyOperators(Of IntPtr, IntPtr, IntPtr), INumber(Of IntPtr), INumberBase(Of IntPtr), IParsable(Of IntPtr), ISerializable, IShiftOperators(Of IntPtr, Integer, IntPtr), ISignedNumber(Of IntPtr), ISpanParsable(Of IntPtr), ISubtractionOperators(Of IntPtr, IntPtr, IntPtr), IUnaryNegationOperators(Of IntPtr, IntPtr), IUnaryPlusOperators(Of IntPtr, IntPtr), IUtf8SpanParsable(Of IntPtr)
Public Structure IntPtr
Implements IEquatable(Of IntPtr), ISerializable
Public Structure IntPtr
Implements ISerializable
Warisan
IntPtr
Atribut
Penerapan
IComparable IComparable<IntPtr> IEquatable<IntPtr> IFormattable ISerializable ISpanFormattable IComparable<TSelf> IEquatable<TSelf> IParsable<IntPtr> IParsable<TSelf> ISpanParsable<IntPtr> ISpanParsable<TSelf> IAdditionOperators<IntPtr,IntPtr,IntPtr> IAdditionOperators<TSelf,TSelf,TSelf> IAdditiveIdentity<IntPtr,IntPtr> IAdditiveIdentity<TSelf,TSelf> IBinaryInteger<IntPtr> IBinaryNumber<IntPtr> IBinaryNumber<TSelf> IBitwiseOperators<IntPtr,IntPtr,IntPtr> IBitwiseOperators<TSelf,TSelf,TSelf> IComparisonOperators<IntPtr,IntPtr,Boolean> IComparisonOperators<TSelf,TSelf,Boolean> IDecrementOperators<IntPtr> IDecrementOperators<TSelf> IDivisionOperators<IntPtr,IntPtr,IntPtr> IDivisionOperators<TSelf,TSelf,TSelf> IEqualityOperators<IntPtr,IntPtr,Boolean> IEqualityOperators<TSelf,TOther,TResult> IEqualityOperators<TSelf,TSelf,Boolean> IIncrementOperators<IntPtr> IIncrementOperators<TSelf> IMinMaxValue<IntPtr> IModulusOperators<IntPtr,IntPtr,IntPtr> IModulusOperators<TSelf,TSelf,TSelf> IMultiplicativeIdentity<IntPtr,IntPtr> IMultiplicativeIdentity<TSelf,TSelf> IMultiplyOperators<IntPtr,IntPtr,IntPtr> IMultiplyOperators<TSelf,TSelf,TSelf> INumber<IntPtr> INumber<TSelf> INumberBase<IntPtr> INumberBase<TSelf> IShiftOperators<IntPtr,Int32,IntPtr> IShiftOperators<TSelf,Int32,TSelf> ISignedNumber<IntPtr> ISubtractionOperators<IntPtr,IntPtr,IntPtr> ISubtractionOperators<TSelf,TSelf,TSelf> IUnaryNegationOperators<IntPtr,IntPtr> IUnaryNegationOperators<TSelf,TSelf> IUnaryPlusOperators<IntPtr,IntPtr> IUnaryPlusOperators<TSelf,TSelf> IUtf8SpanFormattable IUtf8SpanParsable<IntPtr> IUtf8SpanParsable<TSelf>

Contoh

Contoh berikut menggunakan pointer terkelola untuk membalikkan karakter dalam array. Setelah menginisialisasi objek String dan mendapatkan panjangnya, objek tersebut melakukan hal berikut:

  1. Memanggil metode Marshal.StringToHGlobalAnsi untuk menyalin string Unicode ke memori yang tidak dikelola sebagai karakter ANSI (satu byte). Metode mengembalikan objek IntPtr yang menunjuk ke awal string yang tidak dikelola. Contoh Visual Basic menggunakan pointer ini secara langsung; dalam contoh C++, F# dan C#, itu dilemparkan ke penunjuk ke byte.

  2. Memanggil metode Marshal.AllocHGlobal untuk mengalokasikan jumlah byte yang sama dengan string yang tidak dikelola. Metode mengembalikan objek IntPtr yang menunjuk ke awal blok memori yang tidak dikelola. Contoh Visual Basic menggunakan pointer ini secara langsung; dalam contoh C++, F# dan C#, itu dilemparkan ke penunjuk ke byte.

  3. Contoh Visual Basic menentukan variabel bernama offset yang sama dengan panjang string ANSI. Ini digunakan untuk menentukan offset ke dalam memori yang tidak dikelola tempat karakter berikutnya dalam string ANSI disalin. Karena nilai awalnya adalah panjang string, operasi salin akan menyalin karakter dari awal string ke akhir blok memori.

    Contoh C#, F# dan C++ memanggil metode ToPointer untuk mendapatkan penunjuk yang tidak dikelola ke alamat awal string dan blok memori yang tidak dikelola, dan mereka menambahkan satu kurang dari panjang string ke alamat awal string ANSI. Karena penunjuk string yang tidak dikelola sekarang menunjuk ke akhir string, operasi salin akan menyalin karakter dari akhir string ke awal blok memori.

  4. Menggunakan perulangan untuk menyalin setiap karakter dari string ke blok memori yang tidak dikelola.

    Contoh Visual Basic memanggil metode Marshal.ReadByte(IntPtr, Int32) untuk membaca byte (atau karakter satu byte) pada offset tertentu dari pointer terkelola ke string ANSI. Offset bertahap dengan setiap iterasi perulangan. Kemudian memanggil metode Marshal.WriteByte(IntPtr, Int32, Byte) untuk menulis byte ke alamat memori yang ditentukan oleh alamat awal blok memori yang tidak dikelola ditambah offset. Kemudian dekremen offset.

    Contoh C#, F# dan C++ melakukan operasi salin, lalu menurunkan penunjuk ke alamat lokasi berikutnya dalam string ANSI yang tidak dikelola dan menaikkan penunjuk ke alamat berikutnya di blok yang tidak dikelola.

  5. Semua contoh memanggil Marshal.PtrToStringAnsi untuk mengonversi blok memori yang tidak dikelola yang berisi string ANSI yang disalin ke objek String Unicode terkelola.

  6. Setelah menampilkan string asli dan terbalik, semua contoh memanggil metode FreeHGlobal untuk membebaskan memori yang dialokasikan untuk string ANSI yang tidak dikelola dan blok memori yang tidak dikelola.

using namespace System;
using namespace System::Runtime::InteropServices;

class NotTooSafeStringReverse
{
public:
    static void Main()
    {
        String^ stringA = "I seem to be turned around!";
        int copylen = stringA->Length;

        // Allocate HGlobal memory for source and destination strings
        IntPtr sptr = Marshal::StringToHGlobalAnsi(stringA);
        IntPtr dptr = Marshal::AllocHGlobal(copylen + 1);

        char *src = (char *)sptr.ToPointer();
        char *dst = (char *)dptr.ToPointer();

        if (copylen > 0)
        {
            // set the source pointer to the end of the string
            // to do a reverse copy.
            src += copylen - 1;

            while (copylen-- > 0)
            {
                *dst++ = *src--;
            }
            *dst = 0;
        }
        String^ stringB = Marshal::PtrToStringAnsi(dptr);

        Console::WriteLine("Original:\n{0}\n", stringA);
        Console::WriteLine("Reversed:\n{0}", stringB);

        // Free HGlobal memory
        Marshal::FreeHGlobal(dptr);
        Marshal::FreeHGlobal(sptr);
    }
};

int main()
{
    NotTooSafeStringReverse::Main();
}

// The progam has the following output:
//
// Original:
// I seem to be turned around!
//
// Reversed:
// !dnuora denrut eb ot mees I
using System;
using System.Runtime.InteropServices;

class NotTooSafeStringReverse
{
    static public void Main()
    {
        string stringA = "I seem to be turned around!";
        int copylen = stringA.Length;

        // Allocate HGlobal memory for source and destination strings
        IntPtr sptr = Marshal.StringToHGlobalAnsi(stringA);
        IntPtr dptr = Marshal.AllocHGlobal(copylen + 1);

        // The unsafe section where byte pointers are used.
        unsafe
        {
            byte *src = (byte *)sptr.ToPointer();
            byte *dst = (byte *)dptr.ToPointer();

            if (copylen > 0)
            {
                // set the source pointer to the end of the string
                // to do a reverse copy.
                src += copylen - 1;

                while (copylen-- > 0)
                {
                    *dst++ = *src--;
                }
                *dst = 0;
            }
        }
        string stringB = Marshal.PtrToStringAnsi(dptr);

        Console.WriteLine("Original:\n{0}\n", stringA);
        Console.WriteLine("Reversed:\n{0}", stringB);

        // Free HGlobal memory
        Marshal.FreeHGlobal(dptr);
        Marshal.FreeHGlobal(sptr);
    }
}

// The progam has the following output:
//
// Original:
// I seem to be turned around!
//
// Reversed:
// !dnuora denrut eb ot mees I
#nowarn "9"
open System.Runtime.InteropServices
open FSharp.NativeInterop

[<EntryPoint>]
let main _ = 
    let stringA = "I seem to be turned around!"
    let mutable copylen = stringA.Length

    // Allocate HGlobal memory for source and destination strings
    let sptr = Marshal.StringToHGlobalAnsi stringA
    let dptr = Marshal.AllocHGlobal(copylen + 1)

    let mutable src: byte nativeptr = sptr.ToPointer() |> NativePtr.ofVoidPtr
    let mutable dst: byte nativeptr = dptr.ToPointer() |> NativePtr.ofVoidPtr

    if copylen > 0 then
        // set the source pointer to the end of the string
        // to do a reverse copy.
        src <- 
            NativePtr.toNativeInt src + nativeint (copylen - 1) 
            |> NativePtr.ofNativeInt

        while copylen > 0 do
            copylen <- copylen - 1
            NativePtr.read src |> NativePtr.write dst
            dst <- NativePtr.toNativeInt dst + 1n |> NativePtr.ofNativeInt
            src <- NativePtr.toNativeInt src - 1n |> NativePtr.ofNativeInt
        NativePtr.write dst 0uy

    let stringB = Marshal.PtrToStringAnsi dptr

    printfn $"Original:\n{stringA}\n"
    printfn $"Reversed:\n{stringB}"

    // Free HGlobal memory
    Marshal.FreeHGlobal dptr
    Marshal.FreeHGlobal sptr
    0

// The progam has the following output:
//
// Original:
// I seem to be turned around!
//
// Reversed:
// !dnuora denrut eb ot mees I
Imports System.Runtime.InteropServices

Public Module Example
    Public Sub Main()
        Dim stringA As String = "I seem to be turned around!"
        Dim copylen As Integer = stringA.Length

        ' Allocate HGlobal memory for source and destination strings
        Dim sptr As IntPtr = Marshal.StringToHGlobalAnsi(stringA)
        Dim dptr As IntPtr = Marshal.AllocHGlobal(copylen)
        Dim offset As Integer = copylen - 1

         For ctr As Integer = 0 To copylen - 1
            Dim b As Byte = Marshal.ReadByte(sptr, ctr)
            Marshal.WriteByte(dptr, offset, b)
            offset -= 1
         Next

        Dim stringB As String = Marshal.PtrToStringAnsi(dptr)

        Console.WriteLine("Original:{1}{0}{1}", stringA, vbCrLf)
        Console.WriteLine("Reversed:{1}{0}{1}", stringB, vbCrLf)

        ' Free HGlobal memory
        Marshal.FreeHGlobal(dptr)
        Marshal.FreeHGlobal(sptr)
    End Sub
End Module
' The example displays the following output:
'       Original:
'       I seem to be turned around!
'
'       Reversed:
'       !dnuora denrut eb ot mees I

Keterangan

Jenis IntPtr dirancang untuk menjadi bilangan bulat yang ukurannya sama dengan pointer. Artinya, instans jenis ini diharapkan menjadi 32 bit dalam proses 32-bit dan 64 bit dalam proses 64-bit.

Jenis IntPtr dapat digunakan oleh bahasa yang mendukung pointer dan sebagai cara umum untuk merujuk ke data antara bahasa yang melakukan dan tidak mendukung pointer.

IntPtr objek juga dapat digunakan untuk menahan handel. Misalnya, instans IntPtr digunakan secara ekstensif di kelas System.IO.FileStream untuk menyimpan handel file.

Nota

Menggunakan IntPtr sebagai penunjuk atau handel rawan kesalahan dan tidak aman. Ini hanyalah jenis bilangan bulat yang dapat digunakan sebagai format pertukaran untuk pointer dan handel karena ukurannya yang sama. Di luar persyaratan pertukaran tertentu, seperti untuk meneruskan data ke bahasa yang tidak mendukung pointer, pointer yang di ketik dengan benar harus digunakan untuk mewakili pointer dan SafeHandle harus digunakan untuk mewakili handel.

Jenis ini mengimplementasikan ISerializable. Di .NET 5 dan versi yang lebih baru, jenis ini juga mengimplementasikan antarmuka IFormattable. Di .NET 7 dan versi yang lebih baru, jenis ini juga mengimplementasikan antarmuka IBinaryInteger<TSelf>, IMinMaxValue<TSelf>, dan ISignedNumber<TSelf>.

Di C# mulai dari versi 9.0, Anda dapat menggunakan jenis nint bawaan untuk menentukan bilangan bulat berukuran asli. Jenis ini diwakili oleh jenis IntPtr secara internal dan menyediakan operasi dan konversi yang sesuai untuk jenis bilangan bulat. Untuk informasi selengkapnya, lihat jenis nint dan nuint.

Di C# mulai dari versi 11 dan ketika menargetkan runtime .NET 7 atau yang lebih baru, nint adalah alias untuk IntPtr dengan cara yang sama seperti int adalah alias untuk Int32.

Konstruktor

IntPtr(Int32)

Menginisialisasi instans baru IntPtr menggunakan bilangan bulat bertanda tangan 32-bit yang ditentukan.

IntPtr(Int64)

Menginisialisasi instans baru IntPtr menggunakan bilangan bulat bertanda tangan 64-bit yang ditentukan.

IntPtr(Void*)

Menginisialisasi instans baru IntPtr menggunakan penunjuk yang ditentukan ke jenis yang tidak ditentukan.

Bidang

Zero

Bidang baca-saja yang mewakili bilangan bulat bertanda tangan yang telah diinisialisasi ke nol.

Properti

MaxValue

Mendapatkan nilai terbesar yang mungkin dari IntPtr.

MinValue

Mendapatkan nilai sekecil mungkin dari IntPtr.

Size

Mendapatkan ukuran instans ini.

Metode

Abs(IntPtr)

Menghitung absolut nilai.

Add(IntPtr, Int32)

Menambahkan offset ke bilangan bulat yang ditandatangani.

Clamp(IntPtr, IntPtr, IntPtr)

Menjepit nilai ke nilai minimum dan maksimum inklusif.

CompareTo(IntPtr)

Membandingkan instans saat ini dengan objek lain dengan jenis yang sama dan mengembalikan bilangan bulat yang menunjukkan apakah instans saat ini mendahului, mengikuti, atau terjadi dalam posisi yang sama dalam urutan pengurutan seperti objek lainnya.

CompareTo(Object)

Membandingkan instans saat ini dengan objek lain dengan jenis yang sama dan mengembalikan bilangan bulat yang menunjukkan apakah instans saat ini mendahului, mengikuti, atau terjadi dalam posisi yang sama dalam urutan pengurutan seperti objek lainnya.

CopySign(IntPtr, IntPtr)

Menyalin tanda nilai ke tanda nilai lain.

CreateChecked<TOther>(TOther)

Membuat instans jenis saat ini dari nilai, melemparkan pengecualian luapan untuk nilai apa pun yang berada di luar rentang yang dapat diwakili dari jenis saat ini.

CreateSaturating<TOther>(TOther)

Membuat instans jenis saat ini dari nilai, menjenuhkan nilai apa pun yang berada di luar rentang yang dapat diwakili dari jenis saat ini.

CreateTruncating<TOther>(TOther)

Membuat instans jenis saat ini dari nilai, memotong nilai apa pun yang berada di luar rentang yang dapat diwakili dari jenis saat ini.

DivRem(IntPtr, IntPtr)

Menghitung kuota dan sisa dari dua nilai.

Equals(IntPtr)

Menunjukkan apakah objek saat ini sama dengan objek lain dengan jenis yang sama.

Equals(Object)

Mengembalikan nilai yang menunjukkan apakah instans ini sama dengan objek tertentu.

GetHashCode()

Mengembalikan kode hash untuk instans ini.

IsEvenInteger(IntPtr)

Menentukan apakah nilai mewakili angka integral genap.

IsNegative(IntPtr)

Menentukan apakah nilai negatif.

IsOddInteger(IntPtr)

Menentukan apakah nilai mewakili angka integral ganjil.

IsPositive(IntPtr)

Menentukan apakah nilai positif.

IsPow2(IntPtr)

Menentukan apakah nilai adalah kekuatan dua.

LeadingZeroCount(IntPtr)

Menghitung jumlah nol di depan dalam sebuah nilai.

Log2(IntPtr)

Menghitung log2 dari nilai.

Max(IntPtr, IntPtr)

Membandingkan dua nilai dengan komputasi yang lebih besar.

MaxMagnitude(IntPtr, IntPtr)

Membandingkan dua nilai dengan komputasi yang lebih besar.

Min(IntPtr, IntPtr)

Membandingkan dua nilai dengan komputasi yang lebih rendah.

MinMagnitude(IntPtr, IntPtr)

Membandingkan dua nilai dengan komputasi yang lebih rendah.

Parse(ReadOnlySpan<Byte>, IFormatProvider)

Mengurai rentang karakter UTF-8 menjadi nilai.

Parse(ReadOnlySpan<Byte>, NumberStyles, IFormatProvider)

Mengurai rentang karakter UTF-8 menjadi nilai.

Parse(ReadOnlySpan<Char>, IFormatProvider)

Mengurai rentang karakter menjadi nilai.

Parse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider)

Mengonversi rentang baca-saja representasi karakter dari angka dalam gaya tertentu dan format khusus budaya ke bilangan bulat asli yang ditandatangani setara.

Parse(String)

Mengonversi representasi string dari angka ke bilangan bulat asli yang ditandatangani setara.

Parse(String, IFormatProvider)

Mengonversi representasi string dari angka dalam format khusus budaya tertentu ke bilangan bulat asli yang ditandatangani setara.

Parse(String, NumberStyles)

Mengonversi representasi string dari angka dalam gaya tertentu ke bilangan bulat asli yang ditandatangani setara.

Parse(String, NumberStyles, IFormatProvider)

Mengonversi representasi string angka dalam gaya tertentu dan format khusus budaya ke bilangan bulat asli yang ditandatangani setara.

PopCount(IntPtr)

Menghitung jumlah bit yang diatur dalam nilai.

RotateLeft(IntPtr, Int32)

Memutar nilai yang ditinggalkan oleh jumlah tertentu.

RotateRight(IntPtr, Int32)

Memutar nilai tepat dengan jumlah tertentu.

Sign(IntPtr)

Menghitung tanda nilai.

Subtract(IntPtr, Int32)

Mengurangi offset dari bilangan bulat yang ditandatangani.

ToInt32()

Mengonversi nilai instans ini menjadi bilangan bulat bertanda tangan 32-bit.

ToInt64()

Mengonversi nilai instans ini menjadi bilangan bulat bertanda tangan 64-bit.

ToPointer()

Mengonversi nilai instans ini menjadi penunjuk ke jenis yang tidak ditentukan.

ToString()

Mengonversi nilai numerik objek IntPtr saat ini ke representasi string yang setara.

ToString(IFormatProvider)

Mengonversi nilai numerik instans ini ke representasi string yang setara menggunakan format yang ditentukan dan informasi format khusus budaya.

ToString(String)

Mengonversi nilai numerik objek IntPtr saat ini ke representasi string yang setara.

ToString(String, IFormatProvider)

Memformat nilai instans saat ini menggunakan format yang ditentukan.

TrailingZeroCount(IntPtr)

Menghitung jumlah nol berikutnya dalam sebuah nilai.

TryFormat(Span<Byte>, Int32, ReadOnlySpan<Char>, IFormatProvider)

Mencoba memformat nilai instans saat ini sebagai UTF-8 ke dalam rentang byte yang disediakan.

TryFormat(Span<Char>, Int32, ReadOnlySpan<Char>, IFormatProvider)

Mencoba memformat nilai instans saat ini ke dalam rentang karakter yang disediakan.

TryParse(ReadOnlySpan<Byte>, IFormatProvider, IntPtr)

Mencoba mengurai rentang karakter UTF-8 ke dalam nilai.

TryParse(ReadOnlySpan<Byte>, IntPtr)

Mencoba mengonversi rentang karakter UTF-8 yang berisi representasi string angka ke bilangan bulat yang ditandatangani setara.

TryParse(ReadOnlySpan<Byte>, NumberStyles, IFormatProvider, IntPtr)

Mencoba mengurai rentang karakter UTF-8 ke dalam nilai.

TryParse(ReadOnlySpan<Char>, IFormatProvider, IntPtr)

Mencoba mengurai string ke dalam nilai.

TryParse(ReadOnlySpan<Char>, IntPtr)

Mengonversi rentang baca-saja dari representasi karakter dari angka ke bilangan bulat asli yang ditandatangani setara. Nilai pengembalian menunjukkan apakah konversi berhasil.

TryParse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider, IntPtr)

Mengonversi rentang baca-saja representasi karakter dari angka dalam gaya tertentu dan format khusus budaya ke bilangan bulat asli yang ditandatangani setara. Nilai pengembalian menunjukkan apakah konversi berhasil.

TryParse(String, IFormatProvider, IntPtr)

Mencoba mengurai string ke dalam nilai.

TryParse(String, IntPtr)

Mengonversi representasi string dari angka ke bilangan bulat asli yang ditandatangani setara. Nilai pengembalian menunjukkan apakah konversi berhasil.

TryParse(String, NumberStyles, IFormatProvider, IntPtr)

Mengonversi representasi string angka dalam gaya tertentu dan format khusus budaya ke bilangan bulat asli yang ditandatangani setara. Nilai pengembalian menunjukkan apakah konversi berhasil.

Operator

Addition(IntPtr, Int32)

Menambahkan offset ke bilangan bulat yang ditandatangani.

Equality(IntPtr, IntPtr)

Menentukan apakah dua instans IntPtr yang ditentukan sama.

Explicit(Int32 to IntPtr)

Mengonversi nilai bilangan bulat bertanda tangan 32-bit menjadi IntPtr.

Explicit(Int64 to IntPtr)

Mengonversi nilai bilangan bulat bertanda tangan 64-bit menjadi IntPtr.

Explicit(IntPtr to Int32)

Mengonversi nilai IntPtr yang ditentukan menjadi bilangan bulat bertanda tangan 32-bit.

Explicit(IntPtr to Int64)

Mengonversi nilai IntPtr yang ditentukan menjadi bilangan bulat bertanda tangan 64-bit.

Explicit(IntPtr to Void*)

Mengonversi nilai IntPtr yang ditentukan menjadi penunjuk ke jenis yang tidak ditentukan.

API ini tidak sesuai dengan CLS.

Explicit(Void* to IntPtr)

Mengonversi penunjuk yang ditentukan ke jenis yang tidak ditentukan ke IntPtr.

API ini tidak sesuai dengan CLS.

Inequality(IntPtr, IntPtr)

Menentukan apakah dua instans IntPtr yang ditentukan tidak sama.

Subtraction(IntPtr, Int32)

Mengurangi offset dari bilangan bulat yang ditandatangani.

Implementasi Antarmuka Eksplisit

IAdditionOperators<IntPtr,IntPtr,IntPtr>.Addition(IntPtr, IntPtr)

Menambahkan dua nilai bersama-sama untuk menghitung jumlahnya.

IAdditionOperators<IntPtr,IntPtr,IntPtr>.CheckedAddition(IntPtr, IntPtr)

Menambahkan dua nilai bersama-sama untuk menghitung jumlahnya.

IAdditiveIdentity<IntPtr,IntPtr>.AdditiveIdentity

Mendapatkan identitas aditif dari jenis saat ini.

IBinaryInteger<IntPtr>.GetByteCount()

Mendapatkan jumlah byte yang akan ditulis sebagai bagian dari TryWriteLittleEndian(Span<Byte>, Int32).

IBinaryInteger<IntPtr>.GetShortestBitLength()

Mendapatkan panjang, dalam bit, dari representasi pelengkap dua terpendek dari nilai saat ini.

IBinaryInteger<IntPtr>.TryReadBigEndian(ReadOnlySpan<Byte>, Boolean, IntPtr)

Mewakili bilangan bulat bertanda tangan di mana lebar bit sama dengan penunjuk.

IBinaryInteger<IntPtr>.TryReadLittleEndian(ReadOnlySpan<Byte>, Boolean, IntPtr)

Mewakili bilangan bulat bertanda tangan di mana lebar bit sama dengan penunjuk.

IBinaryInteger<IntPtr>.TryWriteBigEndian(Span<Byte>, Int32)

Mencoba menulis nilai saat ini, dalam format big-endian, ke rentang tertentu.

IBinaryInteger<IntPtr>.TryWriteLittleEndian(Span<Byte>, Int32)

Mencoba menulis nilai saat ini, dalam format little-endian, ke rentang tertentu.

IBinaryNumber<IntPtr>.AllBitsSet

Mendapatkan instans jenis biner tempat semua bit diatur.

IBitwiseOperators<IntPtr,IntPtr,IntPtr>.BitwiseAnd(IntPtr, IntPtr)

Menghitung bitwise-dan dari dua nilai.

IBitwiseOperators<IntPtr,IntPtr,IntPtr>.BitwiseOr(IntPtr, IntPtr)

Menghitung bitwise-atau dari dua nilai.

IBitwiseOperators<IntPtr,IntPtr,IntPtr>.ExclusiveOr(IntPtr, IntPtr)

Menghitung nilai eksklusif atau dari dua nilai.

IBitwiseOperators<IntPtr,IntPtr,IntPtr>.OnesComplement(IntPtr)

Menghitung representasi pelengkap seseorang dari nilai tertentu.

IComparisonOperators<IntPtr,IntPtr,Boolean>.GreaterThan(IntPtr, IntPtr)

Membandingkan dua nilai untuk menentukan mana yang lebih besar.

IComparisonOperators<IntPtr,IntPtr,Boolean>.GreaterThanOrEqual(IntPtr, IntPtr)

Membandingkan dua nilai untuk menentukan mana yang lebih besar atau sama.

IComparisonOperators<IntPtr,IntPtr,Boolean>.LessThan(IntPtr, IntPtr)

Membandingkan dua nilai untuk menentukan mana yang kurang.

IComparisonOperators<IntPtr,IntPtr,Boolean>.LessThanOrEqual(IntPtr, IntPtr)

Membandingkan dua nilai untuk menentukan mana yang kurang atau sama.

IDecrementOperators<IntPtr>.CheckedDecrement(IntPtr)

Mengurangi nilai.

IDecrementOperators<IntPtr>.Decrement(IntPtr)

Mengurangi nilai.

IDivisionOperators<IntPtr,IntPtr,IntPtr>.Division(IntPtr, IntPtr)

Membagi satu nilai dengan nilai lainnya untuk menghitung kuotanya.

IEquatable<IntPtr>.Equals(IntPtr)

Mengembalikan nilai yang menunjukkan apakah instans ini sama dengan bilangan bulat bertanda tangan lain.

IIncrementOperators<IntPtr>.CheckedIncrement(IntPtr)

Menaikkan nilai.

IIncrementOperators<IntPtr>.Increment(IntPtr)

Menaikkan nilai.

IMinMaxValue<IntPtr>.MaxValue

Mendapatkan nilai maksimum dari jenis saat ini.

IMinMaxValue<IntPtr>.MinValue

Mendapatkan nilai minimum dari jenis saat ini.

IModulusOperators<IntPtr,IntPtr,IntPtr>.Modulus(IntPtr, IntPtr)

Membagi dua nilai bersama-sama untuk menghitung modulus atau sisanya.

IMultiplicativeIdentity<IntPtr,IntPtr>.MultiplicativeIdentity

Mendapatkan identitas multiplikatif dari jenis saat ini.

IMultiplyOperators<IntPtr,IntPtr,IntPtr>.CheckedMultiply(IntPtr, IntPtr)

Mengalikan dua nilai bersama-sama untuk menghitung produknya.

IMultiplyOperators<IntPtr,IntPtr,IntPtr>.Multiply(IntPtr, IntPtr)

Mengalikan dua nilai bersama-sama untuk menghitung produknya.

INumber<IntPtr>.MaxNumber(IntPtr, IntPtr)

Membandingkan dua nilai dengan komputasi yang lebih besar dan mengembalikan nilai lain jika input NaN.

INumber<IntPtr>.MinNumber(IntPtr, IntPtr)

Membandingkan dua nilai dengan komputasi yang lebih kecil dan mengembalikan nilai lain jika input NaN.

INumberBase<IntPtr>.IsCanonical(IntPtr)

Menentukan apakah nilai berada dalam representasi kanonisnya.

INumberBase<IntPtr>.IsComplexNumber(IntPtr)

Menentukan apakah nilai mewakili bilangan kompleks.

INumberBase<IntPtr>.IsFinite(IntPtr)

Menentukan apakah nilai terbatas.

INumberBase<IntPtr>.IsImaginaryNumber(IntPtr)

Menentukan apakah nilai mewakili angka imajiner murni.

INumberBase<IntPtr>.IsInfinity(IntPtr)

Menentukan apakah nilai tidak terbatas.

INumberBase<IntPtr>.IsInteger(IntPtr)

Menentukan apakah nilai mewakili angka integral.

INumberBase<IntPtr>.IsNaN(IntPtr)

Menentukan apakah nilainya adalah NaN.

INumberBase<IntPtr>.IsNegativeInfinity(IntPtr)

Menentukan apakah nilai adalah tak terbatas negatif.

INumberBase<IntPtr>.IsNormal(IntPtr)

Menentukan apakah nilai normal.

INumberBase<IntPtr>.IsPositiveInfinity(IntPtr)

Menentukan apakah nilai adalah tak terbatas positif.

INumberBase<IntPtr>.IsRealNumber(IntPtr)

Menentukan apakah nilai mewakili angka riil.

INumberBase<IntPtr>.IsSubnormal(IntPtr)

Menentukan apakah nilai adalah subnormal.

INumberBase<IntPtr>.IsZero(IntPtr)

Menentukan apakah nilai adalah nol.

INumberBase<IntPtr>.MaxMagnitudeNumber(IntPtr, IntPtr)

Membandingkan dua nilai dengan komputasi yang memiliki besaran yang lebih besar dan mengembalikan nilai lain jika input NaN.

INumberBase<IntPtr>.MinMagnitudeNumber(IntPtr, IntPtr)

Membandingkan dua nilai dengan komputasi yang memiliki besaran lebih kecil dan mengembalikan nilai lain jika input NaN.

INumberBase<IntPtr>.MultiplyAddEstimate(IntPtr, IntPtr, IntPtr)

Menghitung perkiraan (left * right) + addend.

INumberBase<IntPtr>.One

Mendapatkan nilai 1 untuk jenis tersebut.

INumberBase<IntPtr>.Radix

Mendapatkan radix, atau dasar, untuk jenisnya.

INumberBase<IntPtr>.TryConvertFromChecked<TOther>(TOther, IntPtr)

Mewakili bilangan bulat bertanda tangan di mana lebar bit sama dengan penunjuk.

INumberBase<IntPtr>.TryConvertFromSaturating<TOther>(TOther, IntPtr)

Mewakili bilangan bulat bertanda tangan di mana lebar bit sama dengan penunjuk.

INumberBase<IntPtr>.TryConvertFromTruncating<TOther>(TOther, IntPtr)

Mewakili bilangan bulat bertanda tangan di mana lebar bit sama dengan penunjuk.

INumberBase<IntPtr>.TryConvertToChecked<TOther>(IntPtr, TOther)

Mencoba mengonversi instans jenis saat ini ke jenis lain, melemparkan pengecualian luapan untuk nilai apa pun yang berada di luar rentang yang dapat diwakili dari jenis saat ini.

INumberBase<IntPtr>.TryConvertToSaturating<TOther>(IntPtr, TOther)

Mencoba mengonversi instans jenis saat ini ke jenis lain, menjenuhkan nilai apa pun yang berada di luar rentang yang dapat diwakili dari jenis saat ini.

INumberBase<IntPtr>.TryConvertToTruncating<TOther>(IntPtr, TOther)

Mencoba mengonversi instans jenis saat ini ke jenis lain, memotong nilai apa pun yang berada di luar rentang yang dapat diwakili dari jenis saat ini.

INumberBase<IntPtr>.Zero

Mendapatkan nilai 0 untuk jenis tersebut.

ISerializable.GetObjectData(SerializationInfo, StreamingContext)

Mengisi objek SerializationInfo dengan data yang diperlukan untuk membuat serialisasi objek IntPtr saat ini.

IShiftOperators<IntPtr,Int32,IntPtr>.LeftShift(IntPtr, Int32)

Menggeser nilai yang ditinggalkan oleh jumlah tertentu.

IShiftOperators<IntPtr,Int32,IntPtr>.RightShift(IntPtr, Int32)

Menggeser nilai ke kanan dengan jumlah tertentu.

IShiftOperators<IntPtr,Int32,IntPtr>.UnsignedRightShift(IntPtr, Int32)

Menggeser nilai ke kanan dengan jumlah tertentu.

ISignedNumber<IntPtr>.NegativeOne

Mendapatkan nilai -1 untuk jenis tersebut.

ISubtractionOperators<IntPtr,IntPtr,IntPtr>.CheckedSubtraction(IntPtr, IntPtr)

Mengurangi dua nilai untuk menghitung perbedaannya.

ISubtractionOperators<IntPtr,IntPtr,IntPtr>.Subtraction(IntPtr, IntPtr)

Mengurangi dua nilai untuk menghitung perbedaannya.

IUnaryNegationOperators<IntPtr,IntPtr>.CheckedUnaryNegation(IntPtr)

Menghitung negasi nilai unary yang diperiksa.

IUnaryNegationOperators<IntPtr,IntPtr>.UnaryNegation(IntPtr)

Menghitung negasi nilai yang tidak biasa.

IUnaryPlusOperators<IntPtr,IntPtr>.UnaryPlus(IntPtr)

Menghitung nilai plus unary.

Berlaku untuk

Keamanan Thread

Jenis ini aman untuk utas.

Lihat juga