Marshal.ReadByte Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Считывает один байт из неуправляемой памяти. Поддерживается чтение из ненаправленных расположений памяти.
Перегрузки
| Имя | Описание |
|---|---|
| ReadByte(IntPtr, Int32) |
Считывает один байт в заданном смещение (или индекс) из неуправляемой памяти. |
| ReadByte(Object, Int32) |
Устаревшие..
Считывает один байт в заданном смещение (или индекс) из неуправляемой памяти. |
| ReadByte(IntPtr) |
Считывает один байт из неуправляемой памяти. |
ReadByte(IntPtr, Int32)
- Исходный код:
- Marshal.cs
- Исходный код:
- Marshal.cs
- Исходный код:
- Marshal.cs
- Исходный код:
- Marshal.cs
- Исходный код:
- Marshal.cs
Считывает один байт в заданном смещение (или индекс) из неуправляемой памяти.
public:
static System::Byte ReadByte(IntPtr ptr, int ofs);
[System.Security.SecurityCritical]
public static byte ReadByte(IntPtr ptr, int ofs);
public static byte ReadByte(IntPtr ptr, int ofs);
[<System.Security.SecurityCritical>]
static member ReadByte : nativeint * int -> byte
static member ReadByte : nativeint * int -> byte
Public Shared Function ReadByte (ptr As IntPtr, ofs As Integer) As Byte
Параметры
- ptr
-
IntPtr
nativeint
Базовый адрес в неуправляемой памяти, из которой следует читать.
- ofs
- Int32
Дополнительное смещение байтов, которое добавляется в ptr параметр перед чтением.
Возвращаемое значение
Байт считывается из неуправляемой памяти в заданном смещение.
- Атрибуты
Исключения
Базовый адрес (ptr) плюс байт смещения (ofs) создает недопустимый или пустой адрес.
Примеры
В следующем примере показано, как считывать и записывать данные в неуправляемый массив с помощью ReadByte методов и WriteByte методов.
static void ReadWriteByte()
{
// Allocate unmanaged memory.
int elementSize = 1;
IntPtr unmanagedArray = Marshal.AllocHGlobal(10 * elementSize);
// Set the 10 elements of the C-style unmanagedArray
for (int i = 0; i < 10; i++)
{
Marshal.WriteByte(unmanagedArray, i * elementSize, ((Byte)(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.ReadByte(unmanagedArray, i * elementSize));
}
Marshal.FreeHGlobal(unmanagedArray);
Console.WriteLine("Done. Press Enter to continue.");
Console.ReadLine();
}
Sub ReadWriteByte()
' Allocate unmanaged memory.
Dim elementSize As Integer = 1
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.WriteByte(unmanagedArray, i * elementSize, CType(i + 1, Byte))
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.ReadByte(unmanagedArray, i * elementSize))
Next i
Marshal.FreeHGlobal(unmanagedArray)
Console.WriteLine("Done. Press Enter to continue.")
Console.ReadLine()
End Sub
В следующем примере показано, как использовать ReadByte метод для чтения значения неуправляемого символа.
using namespace System;
using namespace System::Runtime::InteropServices;
void main()
{
// Create an unmanaged byte.
const char * myString = "bB";
// Read the second character of the c string as a managed byte.
Byte ^ myManagedByte = Marshal::ReadByte((IntPtr) (char *) myString, 1);
// Display the byte to the console.
Console::WriteLine(myManagedByte);
}
Комментарии
ReadByte позволяет напрямую взаимодействовать с неуправляемым массивом байтов C, устраняя затраты на копирование всего неуправляемого массива (с помощью Marshal.Copy) в отдельный управляемый массив перед чтением значений его элементов.
Поддерживается чтение из ненаправленных расположений памяти.
См. также раздел
Применяется к
ReadByte(Object, Int32)
- Исходный код:
- Marshal.CoreCLR.cs
- Исходный код:
- Marshal.CoreCLR.cs
- Исходный код:
- Marshal.CoreCLR.cs
- Исходный код:
- Marshal.CoreCLR.cs
- Исходный код:
- Marshal.CoreCLR.cs
Внимание
ReadByte(Object, Int32) may be unavailable in future releases.
Считывает один байт в заданном смещение (или индекс) из неуправляемой памяти.
public:
static System::Byte ReadByte(System::Object ^ ptr, int ofs);
[System.Obsolete("ReadByte(Object, Int32) may be unavailable in future releases.")]
[System.Security.SecurityCritical]
public static byte ReadByte(object ptr, int ofs);
[System.Obsolete("ReadByte(Object, Int32) may be unavailable in future releases.")]
[System.Diagnostics.CodeAnalysis.RequiresDynamicCode("Marshalling code for the object might not be available")]
public static byte ReadByte(object ptr, int ofs);
[System.Obsolete("ReadByte(Object, Int32) may be unavailable in future releases.")]
public static byte ReadByte(object ptr, int ofs);
public static byte ReadByte(object ptr, int ofs);
[System.Security.SecurityCritical]
public static byte ReadByte(object ptr, int ofs);
[<System.Obsolete("ReadByte(Object, Int32) may be unavailable in future releases.")>]
[<System.Security.SecurityCritical>]
static member ReadByte : obj * int -> byte
[<System.Obsolete("ReadByte(Object, Int32) may be unavailable in future releases.")>]
[<System.Diagnostics.CodeAnalysis.RequiresDynamicCode("Marshalling code for the object might not be available")>]
static member ReadByte : obj * int -> byte
[<System.Obsolete("ReadByte(Object, Int32) may be unavailable in future releases.")>]
static member ReadByte : obj * int -> byte
static member ReadByte : obj * int -> byte
[<System.Security.SecurityCritical>]
static member ReadByte : obj * int -> byte
Public Shared Function ReadByte (ptr As Object, ofs As Integer) As Byte
Параметры
- ptr
- Object
Базовый адрес в неуправляемой памяти исходного объекта.
- ofs
- Int32
Дополнительное смещение байтов, которое добавляется в ptr параметр перед чтением.
Возвращаемое значение
Байт считывается из неуправляемой памяти в заданном смещение.
- Атрибуты
Исключения
Базовый адрес (ptr) плюс байт смещения (ofs) создает недопустимый или пустой адрес.
ptr
ArrayWithOffset— это объект. Этот метод не принимает ArrayWithOffset параметры.
Комментарии
ReadByte позволяет напрямую взаимодействовать с неуправляемым массивом байтов C, устраняя затраты на копирование всего неуправляемого массива (с помощью Marshal.Copy) в отдельный управляемый массив перед чтением значений его элементов.
Поддерживается чтение из ненаправленных расположений памяти.
См. также раздел
Применяется к
ReadByte(IntPtr)
- Исходный код:
- Marshal.cs
- Исходный код:
- Marshal.cs
- Исходный код:
- Marshal.cs
- Исходный код:
- Marshal.cs
- Исходный код:
- Marshal.cs
Считывает один байт из неуправляемой памяти.
public:
static System::Byte ReadByte(IntPtr ptr);
[System.Security.SecurityCritical]
public static byte ReadByte(IntPtr ptr);
public static byte ReadByte(IntPtr ptr);
[<System.Security.SecurityCritical>]
static member ReadByte : nativeint -> byte
static member ReadByte : nativeint -> byte
Public Shared Function ReadByte (ptr As IntPtr) As Byte
Параметры
- ptr
-
IntPtr
nativeint
Адрес в неуправляемой памяти, из которой следует читать.
Возвращаемое значение
Байт считывается из неуправляемой памяти.
- Атрибуты
Исключения
ptr не является распознаваемым форматом.
–или–
ptr равно null.
–или–
ptr недопустим.
Примеры
В следующем примере создается блок неуправляемой памяти, записывает байт в неуправляемую память, считывает байт обратно из неуправляемой памяти, а затем удаляет неуправляемую память.
using System;
using System.Runtime.InteropServices;
class Example
{
static void Main(string[] args)
{
// Allocate 1 byte of unmanaged memory.
IntPtr hGlobal = Marshal.AllocHGlobal(1);
// Create a new byte.
byte b = 1;
Console.WriteLine("Byte written to unmanaged memory: " + b);
// Write the byte to unmanaged memory.
Marshal.WriteByte(hGlobal, b);
// Read byte from unmanaged memory.
byte c = Marshal.ReadByte(hGlobal);
Console.WriteLine("Byte read from unmanaged memory: " + c);
// Free the unmanaged memory.
Marshal.FreeHGlobal(hGlobal);
Console.WriteLine("Unmanaged memory was disposed.");
}
}
Imports System.Runtime.InteropServices
Module Example
Sub Main()
' Allocate 1 byte of unmanaged memory.
Dim hGlobal As IntPtr = Marshal.AllocHGlobal(1)
' Create a new byte.
Dim b As Byte = 1
Console.WriteLine("Byte written to unmanaged memory: {0}", b)
' Write the byte to unmanaged memory.
Marshal.WriteByte(hGlobal, b)
' Read byte from unmanaged memory.
Dim c As Byte = Marshal.ReadByte(hGlobal)
Console.WriteLine("Byte read from unmanaged memory: {0}", c)
' Free the unmanaged memory.
Marshal.FreeHGlobal(hGlobal)
Console.WriteLine("Unmanaged memory was disposed.")
End Sub
End Module
В следующем примере показано, как использовать ReadByte метод для чтения значения неуправляемого символа.
using namespace System;
using namespace System::Runtime::InteropServices;
void main()
{
// Create an unmanaged byte.
const char * myString = "b";
// Read the c string as a managed byte.
Byte ^ myManagedByte = Marshal::ReadByte((IntPtr) (char *) myString);
// Display the byte to the console.
Console::WriteLine(myManagedByte);
}
Комментарии
ReadByte имеет подразумеваемое смещение 0. Этот метод позволяет напрямую взаимодействовать с неуправляемым массивом байтов C, устраняя затраты на копирование всего неуправляемого массива (с помощью Marshal.Copy) в отдельный управляемый массив перед чтением значений его элементов.
Поддерживается чтение из ненаправленных расположений памяти.