Even if you did a byte-by-byte comparison they would never be equal. When you use a variable length string, you are actually referencing a Long that contains the address of the first byte of a Unicode character array. So, the corresponding strings in each UDT will contain different addresses