È probabile che questo metodo supporti solo il piano multilingue multilingue di Unicode. Quel Piano contiene i 64k inferiori dei codepoint e può essere rappresentato con un tipo di dati a 16 bit.
C'è stato un tempo in cui il BMP era definito dallo standard Unicode e in quel momento molte lingue e / o runtime hanno aggiunto "supporto Unicode". Hanno pensato che 16 bit sarebbero sempre sufficienti e quindi "Unicode" è uguale a "16 bit caratteri" in molti posti (anche se questo è sbagliato in questi giorni). Per essere onesti: il consorzio Unicode ha anche pensato che il 16 bit dovrebbe essere sufficiente per tutti.
Unicode 2.0 tuttavia ha introdotto piani aggiuntivi ed era chiaro che 16 bit non sono più sufficienti per rappresentare ogni possibile punto di codice Unicode.
La "soluzione" di solito è usare UTF-16 anziché UCS-2. Non sto solo criticando .NET per questo: Java è caduto nella stessa trappola, con un tipo di datichar
di 16 bit e ora deve supportare% istanze diString
che richiedono 2 "caratteri" per rappresentare un singolo punto di codice.