Sdílet prostřednictvím


Marshal.ReadInt16 Metoda

Definice

Čte 16bitové celé číslo se znaménkem z nespravované paměti. Čtení z nezarovnaných paměťových umístění je podporováno.

Přetížení

ReadInt16(IntPtr)

Čte 16bitové celé číslo se znaménkem z nespravované paměti.

ReadInt16(IntPtr, Int32)

Přečte 16bitové celé číslo se znaménkem v daném posunu od nespravované paměti.

ReadInt16(Object, Int32)
Zastaralé.

Přečte 16bitové celé číslo se znaménkem v daném posunu od nespravované paměti.

ReadInt16(IntPtr)

Zdroj:
Marshal.cs
Zdroj:
Marshal.cs
Zdroj:
Marshal.cs

Čte 16bitové celé číslo se znaménkem z nespravované paměti.

public:
 static short ReadInt16(IntPtr ptr);
[System.Security.SecurityCritical]
public static short ReadInt16 (IntPtr ptr);
public static short ReadInt16 (IntPtr ptr);
[<System.Security.SecurityCritical>]
static member ReadInt16 : nativeint -> int16
static member ReadInt16 : nativeint -> int16
Public Shared Function ReadInt16 (ptr As IntPtr) As Short

Parametry

ptr
IntPtr

nativeint

Adresa v nespravované paměti, ze které se má číst.

Návraty

16bitové celé číslo se znaménkem přečtené z nespravované paměti.

Atributy

Výjimky

ptr není rozpoznaný formát.

-nebo-

ptr je null.

-nebo-

Formát ptr je neplatný.

Příklady

Následující příklad ukazuje, jak číst a zapisovat do nespravovaného pole pomocí ReadInt16 metod a WriteInt16 .

static void ReadWriteInt16()
{
    // Allocate unmanaged memory. 
    int elementSize = 2;
    IntPtr unmanagedArray = Marshal.AllocHGlobal(10 * elementSize);

    // Set the 10 elements of the C-style unmanagedArray
    for (int i = 0; i < 10; i++)
    {
        Marshal.WriteInt16(unmanagedArray, i * elementSize, ((Int16)(i + 1)));
    }
    Console.WriteLine("Unmanaged memory written.");

    Console.WriteLine("Reading unmanaged memory:");
    // Print the 10 elements of the C-style unmanagedArray
    for (int i = 0; i < 10; i++)
    {
        Console.WriteLine(Marshal.ReadInt16(unmanagedArray, i * elementSize));
    }

    Marshal.FreeHGlobal(unmanagedArray);

    Console.WriteLine("Done. Press Enter to continue.");
    Console.ReadLine();
}
Sub ReadWriteInt16()
    ' Allocate unmanaged memory. 
    Dim elementSize As Integer = 2
    Dim unmanagedArray As IntPtr = Marshal.AllocHGlobal(10 * elementSize)

    ' Set the 10 elements of the C-style unmanagedArray
    For i As Integer = 0 To 9
        Marshal.WriteInt16(unmanagedArray, i * elementSize, CType(i + 1, Int16))
    Next i
    Console.WriteLine("Unmanaged memory written.")

    Console.WriteLine("Reading unmanaged memory:")
    ' Print the 10 elements of the C-style unmanagedArray
    For i As Integer = 0 To 9
        Console.WriteLine(Marshal.ReadInt16(unmanagedArray, i * elementSize))
    Next i

    Marshal.FreeHGlobal(unmanagedArray)

    Console.WriteLine("Done. Press Enter to continue.")
    Console.ReadLine()
End Sub

Následující příklad ukazuje, jak použít metodu ReadInt16 ke čtení hodnoty nespravované short proměnné.


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



void main()
{
    // Create an unmanaged short.
    short myShort = 42;

    // Read the short as a managed Int16.
        Int16 ^ myManagedVal = Marshal::ReadInt16((IntPtr) &myShort);

    // Display the value to the console.
    Console::WriteLine(myManagedVal);
}

Poznámky

ReadInt16 má implicitní posun 0. Tato metoda umožňuje přímou interakci s nespravovaným polem ve stylu Int16 C, čímž eliminuje náklady na kopírování celého nespravovaného pole (pomocí Marshal.Copy) do samostatného spravovaného pole před čtením hodnot jeho prvků.

Čtení z nezarovnaných paměťových umístění je podporováno.

Viz také

Platí pro

ReadInt16(IntPtr, Int32)

Zdroj:
Marshal.cs
Zdroj:
Marshal.cs
Zdroj:
Marshal.cs

Přečte 16bitové celé číslo se znaménkem v daném posunu od nespravované paměti.

public:
 static short ReadInt16(IntPtr ptr, int ofs);
[System.Security.SecurityCritical]
public static short ReadInt16 (IntPtr ptr, int ofs);
public static short ReadInt16 (IntPtr ptr, int ofs);
[<System.Security.SecurityCritical>]
static member ReadInt16 : nativeint * int -> int16
static member ReadInt16 : nativeint * int -> int16
Public Shared Function ReadInt16 (ptr As IntPtr, ofs As Integer) As Short

Parametry

ptr
IntPtr

nativeint

Základní adresa v nespravované paměti, ze které se má číst.

ofs
Int32

Další posun bajtů, který se přidá do parametru ptr před čtením.

Návraty

16bitové celé číslo se znaménkem přečte z nespravované paměti při daném posunu.

Atributy

Výjimky

Základní adresa (ptr) plus odsazení bajtu (ofs) vytvoří null nebo neplatnou adresu.

Příklady

Následující příklad ukazuje, jak číst a zapisovat do nespravovaného pole pomocí ReadInt16 metod a WriteInt16 .

static void ReadWriteInt16()
{
    // Allocate unmanaged memory. 
    int elementSize = 2;
    IntPtr unmanagedArray = Marshal.AllocHGlobal(10 * elementSize);

    // Set the 10 elements of the C-style unmanagedArray
    for (int i = 0; i < 10; i++)
    {
        Marshal.WriteInt16(unmanagedArray, i * elementSize, ((Int16)(i + 1)));
    }
    Console.WriteLine("Unmanaged memory written.");

    Console.WriteLine("Reading unmanaged memory:");
    // Print the 10 elements of the C-style unmanagedArray
    for (int i = 0; i < 10; i++)
    {
        Console.WriteLine(Marshal.ReadInt16(unmanagedArray, i * elementSize));
    }

    Marshal.FreeHGlobal(unmanagedArray);

    Console.WriteLine("Done. Press Enter to continue.");
    Console.ReadLine();
}
Sub ReadWriteInt16()
    ' Allocate unmanaged memory. 
    Dim elementSize As Integer = 2
    Dim unmanagedArray As IntPtr = Marshal.AllocHGlobal(10 * elementSize)

    ' Set the 10 elements of the C-style unmanagedArray
    For i As Integer = 0 To 9
        Marshal.WriteInt16(unmanagedArray, i * elementSize, CType(i + 1, Int16))
    Next i
    Console.WriteLine("Unmanaged memory written.")

    Console.WriteLine("Reading unmanaged memory:")
    ' Print the 10 elements of the C-style unmanagedArray
    For i As Integer = 0 To 9
        Console.WriteLine(Marshal.ReadInt16(unmanagedArray, i * elementSize))
    Next i

    Marshal.FreeHGlobal(unmanagedArray)

    Console.WriteLine("Done. Press Enter to continue.")
    Console.ReadLine()
End Sub

Následující příklad ukazuje, jak použít metodu ReadInt16 ke čtení hodnoty nespravované short proměnné.


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

void main()
{
    // Create an unmanaged short pointer.
    short * myShort;
    short tmp = 42;
    // Initialize it to another value.
    myShort = &tmp;

    // Read value as a managed Int16.
    Int16 ^ myManagedVal = Marshal::ReadInt16((IntPtr) myShort, 0);

    // Display the value to the console.
    Console::WriteLine(myManagedVal);
}

Poznámky

ReadInt16 umožňuje přímou interakci s nespravovaným 16bitovým polem se znaménkem, což eliminuje náklady na kopírování celého nespravovaného pole (pomocí Marshal.Copy) do samostatného spravovaného pole před čtením hodnot jeho prvků.

Čtení z nezarovnaných paměťových umístění je podporováno.

Viz také

Platí pro

ReadInt16(Object, Int32)

Zdroj:
Marshal.CoreCLR.cs
Zdroj:
Marshal.CoreCLR.cs
Zdroj:
Marshal.CoreCLR.cs

Upozornění

ReadInt16(Object, Int32) may be unavailable in future releases.

Přečte 16bitové celé číslo se znaménkem v daném posunu od nespravované paměti.

public:
 static short ReadInt16(System::Object ^ ptr, int ofs);
[System.Obsolete("ReadInt16(Object, Int32) may be unavailable in future releases.")]
[System.Security.SecurityCritical]
public static short ReadInt16 (object ptr, int ofs);
[System.Obsolete("ReadInt16(Object, Int32) may be unavailable in future releases.")]
public static short ReadInt16 (object ptr, int ofs);
public static short ReadInt16 (object ptr, int ofs);
[System.Security.SecurityCritical]
public static short ReadInt16 (object ptr, int ofs);
[<System.Obsolete("ReadInt16(Object, Int32) may be unavailable in future releases.")>]
[<System.Security.SecurityCritical>]
static member ReadInt16 : obj * int -> int16
[<System.Obsolete("ReadInt16(Object, Int32) may be unavailable in future releases.")>]
static member ReadInt16 : obj * int -> int16
static member ReadInt16 : obj * int -> int16
[<System.Security.SecurityCritical>]
static member ReadInt16 : obj * int -> int16
Public Shared Function ReadInt16 (ptr As Object, ofs As Integer) As Short

Parametry

ptr
Object

Základní adresa zdrojového objektu v nespravované paměti.

ofs
Int32

Další posun bajtů, který se přidá do parametru ptr před čtením.

Návraty

16bitové celé číslo se znaménkem přečte z nespravované paměti při daném posunu.

Atributy

Výjimky

Základní adresa (ptr) plus odsazení bajtu (ofs) vytvoří null nebo neplatnou adresu.

ptr ArrayWithOffset je objekt. Tato metoda nepřijímá ArrayWithOffset parametry.

Poznámky

ReadInt16 umožňuje přímou interakci s nespravovaným 16bitovým polem se znaménkem, což eliminuje náklady na kopírování celého nespravovaného pole (pomocí Marshal.Copy) do samostatného spravovaného pole před čtením hodnot jeho prvků.

Čtení z nezarovnaných paměťových umístění je podporováno.

Viz také

Platí pro