Windows apps
Collapse the table of content
Expand the table of content
The topic you requested is included in another documentation set. For convenience, it's displayed below. Choose Switch to see the topic in its original location.

UnmanagedMemoryStream.WriteByte Method

Note: This method is new in the .NET Framework version 2.0.

Writes a byte to the current position in the file stream.

This method is not CLS-compliant.  

Namespace: System.IO
Assembly: mscorlib (in mscorlib.dll)

public override void WriteByte (
	byte value
public void WriteByte (
	byte value
public override function WriteByte (
	value : byte



A byte value written to the stream.

Exception typeCondition


The stream is closed.


The underlying memory does not support writing.

- or -

An attempt is made to write to the stream and the CanWrite property is false.

- or -

The current position is at the end of the capacity of the stream.


The supplied value causes the stream exceed its maximum capacity.

The following code example demonstrates how to read from and write to unmanaged memory using the UnmanagedMemoryStream class. A block of unmanaged memory is allocated and de-allocated using the Marshal class. In this example, an UnmanagedMemoryStream object is passed to a method which checks the CanWrite property before attempting to write the data to the stream.

// Note: You must compile this sample using the unsafe flag.
// From the command line, type the following: csc sample.cs /unsafe
using System;
using System.IO;
using System.Runtime.InteropServices;
using System.Text;

unsafe class Program
    static void Main()
        // Create some data to write.
        byte[] text = UnicodeEncoding.Unicode.GetBytes("Data to write.");

        // Allocate a block of unmanaged memory.
        IntPtr memIntPtr = Marshal.AllocHGlobal(text.Length);

        // Get a byte pointer from the unmanaged memory block.
        byte* memBytePtr = (byte*)memIntPtr.ToPointer();

        UnmanagedMemoryStream writeStream =
            new UnmanagedMemoryStream(
            memBytePtr, text.Length, text.Length, FileAccess.Write);

        // Write the data.
        WriteToStream(writeStream, text);

        // Close the stream.

        // Create another UnmanagedMemoryStream for reading.
        UnmanagedMemoryStream readStream =
            new UnmanagedMemoryStream(memBytePtr, text.Length);

        // Display the contents of the stream to the console.

        // Close the reading stream.

        // Free up the unmanaged memory.


    public static void WriteToStream(UnmanagedMemoryStream writeStream, byte[] text)
        // Verify that the stream is writable:
        // By default, UnmanagedMemoryStream objects do not have write access,
        // write access must be set explicitly.
        if (writeStream.CanWrite)
            // Write the data, byte by byte
            for (int i = 0; i < writeStream.Length; i++)

    public static void PrintStream(UnmanagedMemoryStream readStream)
        byte[] text = new byte[readStream.Length];
        // Verify that the stream is writable:
        // By default, UnmanagedMemoryStream objects do not have write access,
        // write access must be set explicitly.
        if (readStream.CanRead)
            // Write the data, byte by byte
            for (int i = 0; i < readStream.Length; i++)
                text[i] = (byte)readStream.ReadByte();


Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see System Requirements.

.NET Framework

Supported in: 2.0

Community Additions

© 2017 Microsoft