In VB.NET you can create what in C is called a union, i.e. a particular structure where you can access the same memory with different names. Here’s how you declare such a structure by using the StructLayout attribute, and specifying that you want to define the structure layout explicitly, namely how the fields will be saved in memory within the type.
Structure ARGBColor Dim Red As Byte Dim Green As Byte Dim Blue As Byte Dim Alpha As Byte Dim Value As IntegerEnd Structure
If you set the Value field, you’re actually setting all the 4 bytes of the structure in a single step. Otherwise you can get and set the single bytes of the structure with the other fields. Here’s how you can set the Value field of a variable of type ARGBColor to an hexadecimal value that represents a color, and then read the other fields to retrieve its RGB components:
' Split a color into its components.Dim rgb As ARGBColorrgb.Value = &H112233 ' This is equal to 1122867.Console.WriteLine(String.Format("Red={0}, Green={1}, Blue={2}", rgb.Red, _ rgb.Green, rgb.Blue)) ' => Red=51, Green=34, Blue=17
————————–
Note: this code is taken from Francesco Balena’s Programming Microsoft Visual Basic .NET book (MS Press 2002)