/// <summary> /// Writes string in User String (#US) heap format (see ECMA-335-II 24.2.4 #US and #Blob heaps): /// </summary> /// <remarks> /// The string is UTF16 encoded and prefixed by the its size in bytes. /// /// This final byte holds the value 1 if and only if any UTF16 character within the string has any bit set in its top byte, /// or its low byte is any of the following: 0x01–0x08, 0x0E–0x1F, 0x27, 0x2D, 0x7F. Otherwise, it holds 0. /// The 1 signifies Unicode characters that require handling beyond that normally provided for 8-bit encoding sets. /// </remarks> /// <exception cref="InvalidOperationException">Builder is not writable, it has been linked with another one.</exception> public void WriteUserString(string value) { if (value == null) { throw new ArgumentNullException(nameof(value)); } WriteCompressedInteger(BlobUtilities.GetUserStringByteLength(value.Length)); WriteUTF16(value); WriteByte(BlobUtilities.GetUserStringTrailingByte(value)); }
/// <summary> /// Writes string in User String (#US) heap format (see ECMA-335-II 24.2.4 #US and #Blob heaps): /// </summary> /// <remarks> /// The string is UTF16 encoded and prefixed by the its size in bytes. /// /// This final byte holds the value 1 if and only if any UTF16 character within the string has any bit set in its top byte, /// or its low byte is any of the following: 0x01-0x08, 0x0E-0x1F, 0x27, 0x2D, 0x7F. Otherwise, it holds 0. /// The 1 signifies Unicode characters that require handling beyond that normally provided for 8-bit encoding sets. /// </remarks> /// <exception cref="InvalidOperationException">Builder is not writable, it has been linked with another one.</exception> public void WriteUserString(string value) { if (value is null) { Throw.ArgumentNull(nameof(value)); } WriteCompressedInteger(BlobUtilities.GetUserStringByteLength(value.Length)); WriteUTF16(value); WriteByte(BlobUtilities.GetUserStringTrailingByte(value)); }