15 writes to _string
System.Private.Uri (15)
System\Uri.cs (9)
2169_string = _string.Substring(0, idx);
2187_string = _string.Substring(0, idx);
2237_string = newHost;
3345_string = string.Empty;
3349_string = _syntax.SchemeName + SchemeDelimiter;
3367_string = string.Concat(_string, _originalUnicodeString.AsSpan(origIdx));
3427_string += EscapeUnescapeIri(_originalUnicodeString, offset, origIdx, UriComponents.Path);
3557_string += EscapeUnescapeIri(_originalUnicodeString, offset, origIdx, UriComponents.Query);
3608_string += EscapeUnescapeIri(_originalUnicodeString, offset, origIdx, UriComponents.Fragment);
126 references to _string
System.Private.Uri (126)
System\Uri.cs (101)
168Debug.Assert(offset.End >= offset.Fragment && offset.End <= _string.Length);
188Debug.Assert(Ascii.IsValid(_string));
339char ch = _string[_info.Offset.Path];
548[MemberNotNull(nameof(_string))]
1026? _string
1027: (IsDosPath && (_string[start] == '/' || _string[start] == '\\'))
1028? _string.Substring(start + 1, _info.Offset.Query - start - 1)
1029: _string.Substring(start, _info.Offset.Query - start);
1064if (_string[start] == '/' || _string[start] == '\\')
1076UriHelper.UnescapeString(_string, start, _info.Offset.Query, result, ref count, c_DummyChar,
1184public string OriginalString => _originalUnicodeString ?? _string;
1607return _string;
1629result = _string;
1666(IsDosPath && _string[_info.Offset.Path + SecuredPathIndex - 1] == '|')) // A rare case of c|\
1676result = _string.AsSpan(_info.Offset.Scheme, _info.Offset.End - _info.Offset.Scheme);
1797if (string.Equals(_string, other._string, IsUncOrDosPath ? StringComparison.OrdinalIgnoreCase : StringComparison.Ordinal))
1819string str = other._string;
1828if (_string[i1] != str[i2])
1841if (i1 < _info.Offset.Path && _string[i1] != ':')
2029int length = _string.Length;
2036Debug.Assert(ReferenceEquals(_string, OriginalString));
2038fixed (char* pUriString = _string)
2169_string = _string.Substring(0, idx);
2187_string = _string.Substring(0, idx);
2263info.Offset.End = _string.Length;
2276while (UriHelper.IsLWS(_string[idx]))
2288while (idx < end && (_string[idx] == '/' || _string[idx] == '\\'))
2299while (_string[idx++] != ':')
2306if (_string[idx] == '\\' || _string[idx + 1] == '\\')
2315while (idx < end && (_string[idx] == '/' || _string[idx] == '\\'))
2359while (_string[idx] != '@')
2484string host = CreateHostStringHelper(_string, _info.Offset.Host, _info.Offset.Path, ref flags, _info);
2542host[i] != _string[_info.Offset.Host + i])
2658if ((_info.Offset.Host + i) >= _info.Offset.End || host[i] != _string[_info.Offset.Host + i])
2730else if (IsDosPath && _string[_info.Offset.Path + SecuredPathIndex - 1] == '|')
2765else if (IsDosPath && _string[_info.Offset.Path + SecuredPathIndex - 1] == '|')
2788string str = _string;
2805string str = _string;
3071return _string.Substring(_info.Offset.Scheme, _info.Offset.Path - _info.Offset.Scheme);
3074_string.AsSpan(_info.Offset.Scheme, _info.Offset.User - _info.Offset.Scheme),
3075_string.AsSpan(_info.Offset.Host, _info.Offset.Path - _info.Offset.Host));
3084return _string.Substring(_info.Offset.Host, _info.Offset.Path - _info.Offset.Host);
3086return string.Concat(_string.AsSpan(_info.Offset.Host, _info.Offset.Path - _info.Offset.Host),
3091if (_info.Offset.Scheme == 0 && _info.Offset.End == _string.Length)
3092return _string;
3094return _string.Substring(_info.Offset.Scheme, _info.Offset.End - _info.Offset.Scheme);
3101_string.AsSpan(_info.Offset.Scheme, _info.Offset.User - _info.Offset.Scheme),
3102_string.AsSpan(_info.Offset.Host, _info.Offset.Fragment - _info.Offset.Host));
3104if (_info.Offset.Scheme == 0 && _info.Offset.Fragment == _string.Length)
3105return _string;
3107return _string.Substring(_info.Offset.Scheme, _info.Offset.Fragment - _info.Offset.Scheme);
3111return _string.Substring(_info.Offset.Scheme, _info.Offset.Path - _info.Offset.Scheme);
3115if (_info.Offset.Scheme == 0 && _info.Offset.Fragment == _string.Length)
3116return _string;
3118return _string.Substring(_info.Offset.Scheme, _info.Offset.Fragment - _info.Offset.Scheme);
3124return _string.Substring(_info.Offset.Scheme, _info.Offset.User - _info.Offset.Scheme);
3134while (_string[--idx] != ':')
3137return (idx - _info.Offset.Host == 0) ? string.Empty : _string.Substring(_info.Offset.Host,
3144_info.Offset.End > _info.Offset.Path && _string[_info.Offset.Path] == '/')
3153return _string.Substring(delimiterAwareIdx, _info.Offset.Query - delimiterAwareIdx);
3165return _string.Substring(delimiterAwareIdx, _info.Offset.Fragment - delimiterAwareIdx);
3177return _string.Substring(delimiterAwareIdx, _info.Offset.End - delimiterAwareIdx);
3181_string.Substring(_info.Offset.User, _info.Offset.Path - _info.Offset.User);
3187return string.Concat(_string.AsSpan(_info.Offset.User, _info.Offset.Path - _info.Offset.User),
3191return _string.Substring(_info.Offset.Path, _info.Offset.Fragment - _info.Offset.Path);
3197_string.AsSpan(_info.Offset.Scheme, _info.Offset.User - _info.Offset.Scheme),
3198_string.AsSpan(_info.Offset.Host, _info.Offset.End - _info.Offset.Host));
3200if (_info.Offset.Scheme == 0 && _info.Offset.End == _string.Length)
3201return _string;
3203return _string.Substring(_info.Offset.Scheme, _info.Offset.End - _info.Offset.Scheme);
3206return _string.Substring(_info.Offset.Path, _info.Offset.End - _info.Offset.Path);
3222return _string.Substring(_info.Offset.User, delimiterAwareIdx - _info.Offset.User);
3262int length = _string.Length;
3268fixed (char* str = _string)
3270GetLengthWithoutTrailingSpaces(_string, ref length, idx);
3353_info.Offset.User = _string.Length;
3354_info.Offset.Host = _string.Length;
3357_info.Offset.Path = _string.Length;
3367_string = string.Concat(_string, _originalUnicodeString.AsSpan(origIdx));
3370string str = _string;
3429length = _string.Length;
3431if (_string == _originalUnicodeString)
3433GetLengthWithoutTrailingSpaces(_string, ref length, idx);
3437fixed (char* str = _string)
3559length = _string.Length;
3561if (_string == _originalUnicodeString)
3563GetLengthWithoutTrailingSpaces(_string, ref length, idx);
3570fixed (char* str = _string)
3610length = _string.Length;
3612GetLengthWithoutTrailingSpaces(_string, ref length, idx);
3618fixed (char* str = _string)
4349dest.Append(_string.AsSpan(_info.Offset.Path, _info.Offset.Query - _info.Offset.Path));
4371ReadOnlySpan<char> str = _string;
4387dest.Append(_string.AsSpan(_info.Offset.Path, _info.Offset.Query - _info.Offset.Path));
4408dest.Append(_string.AsSpan(_info.Offset.Path, _info.Offset.Query - _info.Offset.Path));
System\UriExt.cs (25)
19[MemberNotNull(nameof(_string))]
39ParsingError err = ParseScheme(_string, ref _flags, ref _syntax!);
60((uriKind == UriKind.Relative || (_string.Length >= 2 && (_string[0] != '\\' || _string[1] != '\\')))
93if (IriParsing && CheckForUnicodeOrEscapedUnreserved(_string))
98_originalUnicodeString = _string; // original string location changed
443fixed (char* str = _string)
452if (CheckForColonInFirstPathSegment(_string))
456return (CheckCanonical(str, ref idx, _string.Length, c_EOL)
506if (idx >= _info.Offset.User || _string[idx - 1] == '\\' || _string[idx] == '\\')
511while (++idx < _info.Offset.User && (_string[idx] == '/' || _string[idx] == '\\'))
531if (IsDosPath && _string[_info.Offset.Path + SecuredPathIndex - 1] == '|')
560if (idx + 1 >= _string.Length || str[idx] != '/' || str[idx + 1] != '/')
884if (ReferenceEquals(newUriString, baseUri._string))
894return UriHelper.EscapeString(_string, checkExistingEscaped: true, UriHelper.UnreservedReserved);
898return UnescapeDataString(_string);
902if (_string.Length == 0)
906UriHelper.UnescapeString(_string, ref vsb, c_DummyChar, c_DummyChar, c_DummyChar, UnescapeMode.EscapeUnescape, null, false);
1047[MemberNotNull(nameof(_string))]
1075while (otherUri._string[portIndex] != ':' && portIndex > otherUri._info.Offset.Host)
1079if (otherUri._string[portIndex] != ':')
1091_string = otherUri._string;