# C1.Util.DX.DataStream.Read

## Content

<div class="doc-site-dotnet-api-container">



<h1 id="C1_Util_DX_DataStream_Read_" data-uid="C1.Util.DX.DataStream.Read*">Read Method
</h1>
<div class="markdown level0 summary"></div>
<div class="markdown level0 conceptual"></div>



<a id="C1_Util_DX_DataStream_Read_" data-uid="C1.Util.DX.DataStream.Read*"></a>
<h4 id="C1_Util_DX_DataStream_Read__1" data-uid="C1.Util.DX.DataStream.Read``1">Read&lt;T&gt;()</h4>
<div class="markdown level1 summary"><p>Reads a single value from the current stream and advances the current
position within this stream by the number of bytes read.</p>
</div>
<div class="markdown level1 conceptual"></div>
<h5 class="declaration">Declaration</h5>
<div class="codewrapper">
  <pre><code class="lang-csharp hljs">public T Read&lt;T&gt;() where T : struct</code></pre>
</div>
<div class="codewrapper">
  <pre><code class="lang-vbnet hljs">Public Function Read(Of T As Structure)() As T</code></pre>
</div>
<h5 class="returns">Returns</h5>
<table class="table table-bordered table-condensed">
  <thead>
    <tr>
      <th>Type</th>
      <th>Description</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><span class="xref">T</span></td>
      <td><p>The value that was read.</p>
</td>
    </tr>
  </tbody>
</table>
<h5 class="typeParameters">Type Parameters</h5>
<table class="table table-bordered table-condensed">
  <thead>
    <tr>
      <th>Name</th>
      <th>Description</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><span class="parametername">T</span></td>
      <td><p>The type of the value to be read from the stream.</p>
</td>
    </tr>
  </tbody>
</table>
<h5 id="C1_Util_DX_DataStream_Read__1_remarks">Remarks</h5>
<div class="markdown level1 remarks"><p>In order to provide faster read/write, this operation doesn't check stream bound.
A client must carefully not read/write above the size of this datastream.</p>
</div>
<h5 class="exceptions">Exceptions</h5>
<table class="table table-bordered table-condensed">
  <thead>
    <tr>
      <th>Type</th>
      <th>Condition</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.notsupportedexception">NotSupportedException</a></td>
      <td><p>This stream does not support reading.</p>
</td>
    </tr>
  </tbody>
</table>


<a id="C1_Util_DX_DataStream_Read_" data-uid="C1.Util.DX.DataStream.Read*"></a>
<h4 id="C1_Util_DX_DataStream_Read_System_Byte___System_Int32_System_Int32_" data-uid="C1.Util.DX.DataStream.Read(System.Byte[],System.Int32,System.Int32)">Read(byte[], int, int)</h4>
<div class="markdown level1 summary"><p>Reads a sequence of bytes from the current stream and advances the position
within the stream by the number of bytes read.</p>
</div>
<div class="markdown level1 conceptual"></div>
<h5 class="declaration">Declaration</h5>
<div class="codewrapper">
  <pre><code class="lang-csharp hljs">public override int Read(byte[] buffer, int offset, int count)</code></pre>
</div>
<div class="codewrapper">
  <pre><code class="lang-vbnet hljs">Public Overrides Function Read(buffer As Byte(), offset As Integer, count As Integer) As Integer</code></pre>
</div>
<h5 class="parameters">Parameters</h5>
<table class="table table-bordered table-condensed">
  <thead>
    <tr>
      <th>Type</th>
      <th>Name</th>
      <th>Description</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.byte">byte</a>[]</td>
      <td><span class="parametername">buffer</span></td>
      <td><p>An array of values to be read from the stream.</p>
</td>
    </tr>
    <tr>
      <td><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></td>
      <td><span class="parametername">offset</span></td>
      <td><p>The zero-based byte offset in buffer at which to begin storing
the data read from the current stream.</p>
</td>
    </tr>
    <tr>
      <td><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></td>
      <td><span class="parametername">count</span></td>
      <td><p>The maximum number of bytes to be read from the current stream.</p>
</td>
    </tr>
  </tbody>
</table>
<h5 class="returns">Returns</h5>
<table class="table table-bordered table-condensed">
  <thead>
    <tr>
      <th>Type</th>
      <th>Description</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></td>
      <td><p>The number of bytes read from the stream.</p>
</td>
    </tr>
  </tbody>
</table>
<h5 class="overrides">Overrides</h5>
<div><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.io.stream.read">Stream.Read(byte[], int, int)</a></div>
<h5 id="C1_Util_DX_DataStream_Read_System_Byte___System_Int32_System_Int32__remarks">Remarks</h5>
<div class="markdown level1 remarks"><p>In order to provide faster read/write, this operation doesn't check stream bound.
A client must carefully not read/write above the size of this datastream.</p>
</div>
<h5 class="exceptions">Exceptions</h5>
<table class="table table-bordered table-condensed">
  <thead>
    <tr>
      <th>Type</th>
      <th>Condition</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.notsupportedexception">NotSupportedException</a></td>
      <td><p>This stream does not support reading.</p>
</td>
    </tr>
  </tbody>
</table>


<a id="C1_Util_DX_DataStream_Read_" data-uid="C1.Util.DX.DataStream.Read*"></a>
<h4 id="C1_Util_DX_DataStream_Read_System_IntPtr_System_Int32_System_Int32_" data-uid="C1.Util.DX.DataStream.Read(System.IntPtr,System.Int32,System.Int32)">Read(IntPtr, int, int)</h4>
<div class="markdown level1 summary"><p>Reads a sequence of bytes from the current stream and advances the current position within this stream by the number of bytes written.</p>
</div>
<div class="markdown level1 conceptual"></div>
<h5 class="declaration">Declaration</h5>
<div class="codewrapper">
  <pre><code class="lang-csharp hljs">public void Read(IntPtr buffer, int offset, int count)</code></pre>
</div>
<div class="codewrapper">
  <pre><code class="lang-vbnet hljs">Public Sub Read(buffer As IntPtr, offset As Integer, count As Integer)</code></pre>
</div>
<h5 class="parameters">Parameters</h5>
<table class="table table-bordered table-condensed">
  <thead>
    <tr>
      <th>Type</th>
      <th>Name</th>
      <th>Description</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.intptr">IntPtr</a></td>
      <td><span class="parametername">buffer</span></td>
      <td><p>An array of bytes. This method copies <code class="paramref">count</code> bytes from <code class="paramref">buffer</code> to the current stream.</p>
</td>
    </tr>
    <tr>
      <td><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></td>
      <td><span class="parametername">offset</span></td>
      <td><p>The zero-based byte offset in <code class="paramref">buffer</code> at which to begin copying bytes to the current stream.</p>
</td>
    </tr>
    <tr>
      <td><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></td>
      <td><span class="parametername">count</span></td>
      <td><p>The number of bytes to be written to the current stream.</p>
</td>
    </tr>
  </tbody>
</table>
</div>
