Microsoft documentation states that this code will return 7 characters
The Length property returns the number of Char objects in this instance, not
You would have to prevent the interpretation of the literal by the compiler. This can be done with the @ prefix, like this:
var characters = @"abc\u0000def";
The Length
property of this string will then return 12, but there will no longer be an actual unicode character in the string.
The C# compiler will replace \u0000
by a null byte. That means, at execution time you will simply have only 7 characters in your memory.
If you don't want the compiler to replace the special char, you have to escape the backslash in the first place:
string characters = "abc\\u0000def";
Console.WriteLine(characters.Length); // Displays 12