Здравствуйте, Ikemefula, Вы писали:
I>Здравствуйте, ·, Вы писали:
I>·>В Шарпе да... даже банальный string.cs это сплошной треш, угар и unsafe. Гы.
I>Да, это одна из проблем. В винде сплошной блудняк со строками и вот такими вот "гвоздями" товарищи и прибили дотнет к винде.
Ну в .Net Core
https://github.com/dotnet/coreclr/blob/32f0f9721afb584b4a14d69135bea7ddc129f755/src/mscorlib/src/System/String.cs
Нет привязки к винде.
Но есть метод unsafe internal int ConvertToAnsi(byte *pbNativeBuffer, int cbNativeBuffer, bool fBestFit, bool fThrowOnUnmappableChar)
который использует
fixed (char* pwzChar = &this.m_firstChar)
{
nb = Win32Native.WideCharToMultiByte(
CP_ACP,
flgs,
pwzChar,
this.Length,
pbNativeBuffer,
cbNativeBuffer,
IntPtr.Zero,
(fThrowOnUnmappableChar ? new IntPtr(&DefaultCharUsed) : IntPtr.Zero));
}