File: System\Reflection\Internal\Utilities\StringUtils.cs
Web Access
Project: src\src\libraries\System.Reflection.Metadata\src\System.Reflection.Metadata.csproj (System.Reflection.Metadata)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
namespace System.Reflection.Metadata
{
    internal static class StringUtils
    {
        internal static int IgnoreCaseMask(bool ignoreCase)
        {
            return ignoreCase ? 0x20 : 0xff;
        }
 
        internal static bool IsEqualAscii(int a, int b, int ignoreCaseMask)
        {
            // When not ignoring case (most often):
            // - only the first condition is evaluated multiple times during the loop.
            // - the remaining condition is false since ignoreCaseMask is 0xff.
            // When ignoring case
            // - the most likely case is still a == b
            // - ignoreCaseMask is 0x20
            return a == b || ((a | 0x20) == (b | 0x20) && unchecked((uint)((a | ignoreCaseMask) - 'a')) <= 'z' - 'a');
        }
    }
}