DynamicRest.JsonReader.ReadNumber C# (CSharp) Method

ReadNumber() private method

private ReadNumber ( ) : object
return object
        private object ReadNumber()
        {
            char ch = (char)_reader.Read();

            StringBuilder sb = new StringBuilder();
            bool hasDecimal = (ch == '.');

            sb.Append(ch);
            while (true) {
                ch = PeekNextSignificantCharacter();

                if (Char.IsDigit(ch) || (ch == '.')) {
                    hasDecimal = hasDecimal || (ch == '.');

                    _reader.Read();
                    sb.Append(ch);
                }
                else {
                    break;
                }
            }

            string s = sb.ToString();
            if (hasDecimal) {
                float value;
                if (Single.TryParse(s, NumberStyles.Any, CultureInfo.InvariantCulture, out value)) {
                    return value;
                }
            }
            else {
                int value;
                if (Int32.TryParse(s, NumberStyles.Any, CultureInfo.InvariantCulture, out value)) {
                    return value;
                }
                else {
                    long lvalue;
                    if (Int64.TryParse(s, NumberStyles.Any, CultureInfo.InvariantCulture, out lvalue)) {
                        return lvalue;
                    }
                }
            }

            throw new FormatException("Invalid numeric literal.");
        }