An unsung benefit of programming for Microsoft .NET is that all strings are Unicode. I didn’t realize just how much of a benefit this is until recently. I’m in the middle of a Delphi project that has to be “global ready,” which means (among other things) that all the strings have to be localizable. This is a giant pain. Writing a localizable application in Delphi requires that I use three different string types (PChar, String, and WideString), and continually convert from one string type to another. The problem is similar in C and C++.
With .NET, every string is Unicode and all functions that handle strings assume that the strings are Unicode. One string type. No conversions. Life is good.