Yeah I wish C# had a flag for this. UTF-16 is stupid, and in so, so many cases, it's just a pure loss with no benefits at all.
It's not that simple. See [1] and [2]
[1] https://bugs.openjdk.java.net/browse/JDK-8054307 [2] http://shipilev.net/blog/2015/black-magic-method-dispatch/
I wrote Map<String,String> which does this transparently, and it consumes about 5x less memory compared to HashMap<String,String>.