Сообщение Re[3]: Сравнение строк в C# от 05.09.2022 22:01
Изменено 05.09.2022 22:08 VladD2
Re[3]: Сравнение строк в C#
Здравствуйте, Went, Вы писали:
НС>>https://github.com/dotnet/coreclr/blob/master/src/System.Private.CoreLib/shared/System/String.Comparison.cs
W>Огромное спасибо, то что надо!
Только там тебе смотреть не чего. Точнее разве что вот на это:
Так что тебе нужно на CompareInfo смотреть, если хочешь именно в соответствии с правилами для культур сравнивать.
Тут скорее вопрос, а зачем тебе это надо? Может проще позвать дотнетную функцию из неуправляемого приложения?
НС>>https://github.com/dotnet/coreclr/blob/master/src/System.Private.CoreLib/shared/System/String.Comparison.cs
W>Огромное спасибо, то что надо!
Только там тебе смотреть не чего. Точнее разве что вот на это:
public static int Compare(string? strA, string? strB, CultureInfo? culture, CompareOptions options)
{
CultureInfo compareCulture = culture ?? CultureInfo.CurrentCulture;
return compareCulture.CompareInfo.Compare(strA, strB, options);
}
Так что тебе нужно на CompareInfo смотреть, если хочешь именно в соответствии с правилами для культур сравнивать.
Тут скорее вопрос, а зачем тебе это надо? Может проще позвать дотнетную функцию из неуправляемого приложения?
Re[3]: Сравнение строк в C#
Здравствуйте, Went, Вы писали:
НС>>https://github.com/dotnet/coreclr/blob/master/src/System.Private.CoreLib/shared/System/String.Comparison.cs
W>Огромное спасибо, то что надо!
Только там тебе смотреть не чего. Точнее разве что вот на это:
Так что тебе нужно на CompareInfo смотреть, если хочешь именно в соответствии с правилами для культур сравнивать. А там дальше по коду:
Т.е. всё уходит в нэйтив.
Тут скорее вопрос, а зачем тебе это надо? Может проще позвать дотнетную функцию из неуправляемого приложения?
НС>>https://github.com/dotnet/coreclr/blob/master/src/System.Private.CoreLib/shared/System/String.Comparison.cs
W>Огромное спасибо, то что надо!
Только там тебе смотреть не чего. Точнее разве что вот на это:
public static int Compare(string? strA, string? strB, CultureInfo? culture, CompareOptions options)
{
CultureInfo compareCulture = culture ?? CultureInfo.CurrentCulture;
return compareCulture.CompareInfo.Compare(strA, strB, options);
}
Так что тебе нужно на CompareInfo смотреть, если хочешь именно в соответствии с правилами для культур сравнивать. А там дальше по коду:
// Compare a string using the native API calls -- COMNlsInfo::InternalCompareString
[System.Security.SecurityCritical] // auto-generated
[ResourceExposure(ResourceScope.Process)]
[DllImport(JitHelpers.QCall, CharSet = CharSet.Unicode)]
[SuppressUnmanagedCodeSecurity]
private static extern int InternalCompareString(IntPtr handle, IntPtr handleOrigin, String localeName, String string1, int offset1, int length1,
String string2, int offset2, int length2, int flags);
Т.е. всё уходит в нэйтив.
Тут скорее вопрос, а зачем тебе это надо? Может проще позвать дотнетную функцию из неуправляемого приложения?