VB.NET Byte and Sbyte TypesReview the Byte and SByte types. Measure the memory usage of Bytes and Byte arrays.
dot net perls

Byte. This is a fundamental unit of memory. It contains eight bits. Other types such as Integer are measured in terms of bytes. A byte is the smallest addressable unit. To change bits, bitwise operators must be used.

Example. Let's use the Byte type. Just like an Integer, the Byte can be declared and initialized in a Dim statement. Next we see that the Byte's minimum value is zero. The maximum value is 255.


Note If you try to assign a negative value to Byte, a compile-time error may occur.

And If the compiler cannot detect the error on its own, runtime behavior may be unexpected.

Alias This type is aliased to the System.Byte type. System.Byte is a composite name—it is easier to just specify Byte in your VB.NET program.

VB.NET program that uses Byte type
Module Module1 Sub Main() ' Byte variable. Dim value As Byte = 5 Console.WriteLine(value) ' Min and Max. Console.WriteLine(Byte.MinValue) Console.WriteLine(Byte.MaxValue) ' Types. Console.WriteLine(value.GetType()) Console.WriteLine(value.GetTypeCode()) ' Memory usage (allocate 1 million and 1 elements). Dim a As Long = GC.GetTotalMemory(False) Dim arr(1000 * 1000) As Byte arr(0) = 1 Dim b As Long = GC.GetTotalMemory(False) Console.WriteLine((b - a) / (1000 * 1000)) End Sub End Module
5 0 255 System.Byte 6 1.000032

You can guess how many bytes are contained in each Byte element in an array. But for completeness I measured it. The program returns about 1 byte per Byte element. There is a little extra on the result.

Tip The program allocates 1 million and 1 elements in the array—in VB.NET, we specify the last index, so we have an extra element.

Tip 2 When an array is allocated in a VB.NET program, it requires both memory for the array reference, and the array object data.

Storage locations. The reference is often stored on the evaluation stack in the virtual execution environment. But the array object data is always stored in a separate place—the managed heap.


Array. The Byte type is probably most useful when used as part of an array type. An array of bytes can store any complete file in memory. This can be useful for optimizations such as caches.

Byte Array

Also Byte can be beneficial for when file formats need to be read or parsed at the level of the binary. The BinaryReader type is helpful.


SByte. A Byte is unsigned—it has no sign bit. But SByte is a signed Byte—it has the same representation size but includes a sign bit. So it can store the values -128 (its MinValue) through 127 (its MaxValue).

VB.NET program that uses SByte
Module Module1 Sub Main() ' Display minimum and maximum values for SByte. Dim value As SByte = SByte.MinValue Console.WriteLine(value) value = SByte.MaxValue Console.WriteLine(value) End Sub End Module
-128 127

Summary. A Byte requires one byte of memory. It can store values between, and including, zero and 255. It has no sign bit so cannot store a negative value. Byte arrays represent binary data files in memory.

© 2007-2021 sam allen. send bug reports to info@dotnetperls.com.