# UShort data type (Visual Basic)

Holds unsigned 16-bit (2-byte) integers ranging in value from 0 through 65,535.

## Remarks

Use the UShort data type to contain binary data too large for Byte.

The default value of UShort is 0.

## Literal assignments

You can declare and initialize a UShort variable by assigning it a decimal literal, a hexadecimal literal, an octal literal, or (starting with Visual Basic 2017) a binary literal. If the integer literal is outside the range of UShort (that is, if it is less than UInt16.MinValue or greater than UInt16.MaxValue, a compilation error occurs.

In the following example, integers equal to 65,034 that are represented as decimal, hexadecimal, and binary literals are assigned to UShort values.

Dim ushortValue1 As UShort = 65034
Console.WriteLine(ushortValue1)

Dim ushortValue2 As UShort = &HFE0A
Console.WriteLine(ushortValue2)

Dim ushortValue3 As UShort = &B1111_1110_0000_1010
Console.WriteLine(ushortValue3)
' The example displays the following output:
'          65034
'          65034
'          65034


Note

You use the prefix &h or &H to denote a hexadecimal literal, the prefix &b or &B to denote a binary literal, and the prefix &o or &O to denote an octal literal. Decimal literals have no prefix.

Starting with Visual Basic 2017, you can also use the underscore character, _, as a digit separator to enhance readability, as the following example shows.

Dim ushortValue1 As UShort = 65_034
Console.WriteLine(ushortValue1)

Dim ushortValue3 As UShort = &B11111110_00001010
Console.WriteLine(ushortValue3)
' The example displays the following output:
'          65034
'          65034


Starting with Visual Basic 15.5, you can also use the underscore character (_) as a leading separator between the prefix and the hexadecimal, binary, or octal digits. For example:

Dim number As UShort = &H_FF8C


To use the underscore character as a leading separator, you must add the following element to your Visual Basic project (*.vbproj) file:

<PropertyGroup>
<LangVersion>15.5</LangVersion>
</PropertyGroup>


Numeric literals can also include the US or us type character to denote the UShort data type, as the following example shows.

Dim number = &H_5826us


## Programming tips

• Negative Numbers. Because UShort is an unsigned type, it cannot represent a negative number. If you use the unary minus (-) operator on an expression that evaluates to type UShort, Visual Basic converts the expression to Integer first.

• CLS Compliance. The UShort data type is not part of the Common Language Specification (CLS), so CLS-compliant code cannot consume a component that uses it.

• Widening. The UShort data type widens to Integer, UInteger, Long, ULong, Decimal, Single, and Double. This means you can convert UShort to any of these types without encountering a System.OverflowException error.

• Type Characters. Appending the literal type characters US to a literal forces it to the UShort data type. UShort has no identifier type character.

• Framework Type. The corresponding type in the .NET Framework is the System.UInt16 structure.