System.Globalization.BaseInfoTable.CompareStringToStringPoolStringBinary C# (CSharp) Méthode

CompareStringToStringPoolStringBinary() private méthode

private CompareStringToStringPoolStringBinary ( String name, int offset ) : int
name String
offset int
Résultat int
        internal unsafe int CompareStringToStringPoolStringBinary(String name, int offset) {
            int test = 0;
            char* pCharValues = unchecked((char*)(m_pDataPool + offset));
            // In the case of empty string, pCharValues[0] will have a size of 1, so we should check pCharValues[1] for empty string.
            if (pCharValues[1] == 0) {
                if(name.Length == 0) {
                    return (0);
                }
                return (1);
            }

            for(int i = 0; (i < (int)pCharValues[0]) && (i < name.Length); i++) {
                BCLDebug.Assert(!(name[i] >= 'A' && name[i] <= 'Z'), "name should be in lowercase");
                // A little case insensitivity, for ASCII only.
                test = name[i] - ((pCharValues[i + 1] <= 'Z' && pCharValues[i + 1] >= 'A') ? 
                                  (pCharValues[i + 1] + 'a' - 'A'): 
                                  (pCharValues[i + 1]));

                if(test != 0) {
                    break;
                }
            }

            return(test == 0 ? name.Length - (int)pCharValues[0] : test);
        }
    }