System.Data.SqlTypes.SqlString.CompareBinary C# (CSharp) Method

CompareBinary() private static method

private static CompareBinary ( SqlString x, SqlString y ) : int
x SqlString
y SqlString
return int
        private static int CompareBinary(SqlString x, SqlString y)
        {
            byte[] rgDataX = s_unicodeEncoding.GetBytes(x._value);
            byte[] rgDataY = s_unicodeEncoding.GetBytes(y._value);
            int cbX = rgDataX.Length;
            int cbY = rgDataY.Length;
            int cbMin = cbX < cbY ? cbX : cbY;
            int i;

            Debug.Assert(cbX % 2 == 0);
            Debug.Assert(cbY % 2 == 0);

            for (i = 0; i < cbMin; i++)
            {
                if (rgDataX[i] < rgDataY[i])
                    return -1;
                else if (rgDataX[i] > rgDataY[i])
                    return 1;
            }

            i = cbMin;

            int iCh;
            int iSpace = ' ';

            if (cbX < cbY)
            {
                for (; i < cbY; i += 2)
                {
                    iCh = rgDataY[i + 1] << 8 + rgDataY[i];
                    if (iCh != iSpace)
                        return (iSpace > iCh) ? 1 : -1;
                }
            }
            else
            {
                for (; i < cbX; i += 2)
                {
                    iCh = rgDataX[i + 1] << 8 + rgDataX[i];
                    if (iCh != iSpace)
                        return (iCh > iSpace) ? 1 : -1;
                }
            }

            return 0;
        }