Marshal.WriteByte Метод

Определение

Записывает однобайтовое значение в неуправляемую память.

Перегрузки

WriteByte(Object, Int32, Byte)
Устаревшие..

Записывает однобайтовое значение в неуправляемую память с указанным смещением.

WriteByte(IntPtr, Byte)

Записывает однобайтовое значение в неуправляемую память.

WriteByte(IntPtr, Int32, Byte)

Записывает однобайтовое значение в неуправляемую память с указанным смещением.

WriteByte(Object, Int32, Byte)

Исходный код:
Marshal.CoreCLR.cs
Исходный код:
Marshal.CoreCLR.cs
Исходный код:
Marshal.CoreCLR.cs

Внимание!

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

Записывает однобайтовое значение в неуправляемую память с указанным смещением.

C#
[System.Obsolete("WriteByte(Object, Int32, Byte) may be unavailable in future releases.")]
[System.Security.SecurityCritical]
public static void WriteByte(object ptr, int ofs, byte val);
C#
[System.Obsolete("WriteByte(Object, Int32, Byte) may be unavailable in future releases.")]
public static void WriteByte(object ptr, int ofs, byte val);
C#
public static void WriteByte(object ptr, int ofs, byte val);
C#
[System.Security.SecurityCritical]
public static void WriteByte(object ptr, int ofs, byte val);

Параметры

ptr
Object

Базовый адрес конечного объекта в неуправляемой памяти.

ofs
Int32

Дополнительное смещение байтов, добавляемое к параметру ptr перед записью.

val
Byte

Значение для записи.

Атрибуты

Исключения

Сумма базового адреса (ptr) и байта смещения (ofs) дает значение null или недопустимый адрес.

Параметр ptr является объектом ArrayWithOffset. Этот метод не принимает параметры ArrayWithOffset.

Комментарии

WriteByte обеспечивает прямое взаимодействие с неуправляемым массивом байтов В стиле C, устраняя затраты на копирование всего неуправляемого массива (с помощью Marshal.Copy) в отдельный управляемый массив перед установкой значений его элементов.

См. также раздел

Применяется к

.NET 9 и другие версии
Продукт Версии (Устарело)
.NET (Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9)
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1 (4.7 (package-provided), 4.7.1 (package-provided), 4.7.2 (package-provided), 4.8 (package-provided))
.NET Standard 1.1, 2.0 (1.2, 1.3, 1.4, 1.5, 1.6, 2.1)
UWP (10.0)

WriteByte(IntPtr, Byte)

Исходный код:
Marshal.cs
Исходный код:
Marshal.cs
Исходный код:
Marshal.cs

Записывает однобайтовое значение в неуправляемую память.

C#
[System.Security.SecurityCritical]
public static void WriteByte(IntPtr ptr, byte val);
C#
public static void WriteByte(IntPtr ptr, byte val);

Параметры

ptr
IntPtr

Адрес в неуправляемой памяти, по которому производится запись.

val
Byte

Значение для записи.

Атрибуты

Исключения

ptr не является распознаваемым форматом.

-или-

ptr имеет значение null.

-или-

ptr недопустим.

Примеры

В следующем примере создается блок неуправляемой памяти, записывается байт в неуправляемую память, считывается байт обратно из неуправляемой памяти, а затем удаляется неуправляемая память.

C#
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.");
     }
}

Комментарии

WriteByte обеспечивает прямое взаимодействие с неуправляемым массивом байтов В стиле C, устраняя затраты на копирование всего неуправляемого массива (с помощью Marshal.Copy) в отдельный управляемый массив перед установкой значений его элементов.

См. также раздел

Применяется к

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

WriteByte(IntPtr, Int32, Byte)

Исходный код:
Marshal.cs
Исходный код:
Marshal.cs
Исходный код:
Marshal.cs

Записывает однобайтовое значение в неуправляемую память с указанным смещением.

C#
[System.Security.SecurityCritical]
public static void WriteByte(IntPtr ptr, int ofs, byte val);
C#
public static void WriteByte(IntPtr ptr, int ofs, byte val);

Параметры

ptr
IntPtr

Базовый адрес для записи в неуправляемой памяти.

ofs
Int32

Дополнительное смещение байтов, добавляемое к параметру ptr перед записью.

val
Byte

Значение для записи.

Атрибуты

Исключения

Сумма базового адреса (ptr) и байта смещения (ofs) дает значение null или недопустимый адрес.

Примеры

В следующем примере показано, как считывать и записывать данные в неуправляемый массив с помощью ReadByte методов и WriteByte .

C#
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();
}

Комментарии

WriteByte обеспечивает прямое взаимодействие с неуправляемым массивом байтов В стиле C, устраняя затраты на копирование всего неуправляемого массива (с помощью Marshal.Copy) в отдельный управляемый массив перед установкой значений его элементов.

См. также раздел

Применяется к

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0