13 writes to _string
System.Private.Uri (13)
System\Uri.cs (8)
2136_string = _string.Substring(0, idx);
2154_string = _string.Substring(0, idx);
2203_string = newHost;
3256_string =
3280_string = string.Concat(_string, _originalUnicodeString.AsSpan(origIdx));
3340_string += EscapeUnescapeIri(_originalUnicodeString, offset, origIdx, isQuery: false);
3467_string += EscapeUnescapeIri(_originalUnicodeString, offset, origIdx, isQuery: true);
3517_string += EscapeUnescapeIri(_originalUnicodeString, offset, origIdx, isQuery: false);
112 references to _string
System.Private.Uri (112)
System\Uri.cs (95)
173Debug.Assert(offset.End >= offset.Fragment && offset.End <= _string.Length);
193Debug.Assert(Ascii.IsValid(_string));
344char ch = _string[_info.Offset.Path];
553[MemberNotNull(nameof(_string))]
1022? _string
1023: (IsDosPath && _string[start] is '/' or '\\')
1024? _string.Substring(start + 1, _info.Offset.Query - start - 1)
1025: _string.Substring(start, _info.Offset.Query - start);
1055if (_string[start] is '/' or '\\')
1064ReadOnlySpan<char> path = _string.AsSpan(start, _info.Offset.Query - start);
1180public string OriginalString => _originalUnicodeString ?? _string;
1584return _string;
1606result = _string;
1643(IsDosPath && _string[_info.Offset.Path + SecuredPathIndex - 1] == '|')) // A rare case of c|\
1653result = _string.AsSpan(_info.Offset.Scheme, _info.Offset.End - _info.Offset.Scheme);
1774if (string.Equals(_string, other._string, IsUncOrDosPath ? StringComparison.OrdinalIgnoreCase : StringComparison.Ordinal))
1796string str = other._string;
1805if (_string[i1] != str[i2])
1818if (i1 < _info.Offset.Path && _string[i1] != ':')
1999Debug.Assert(ReferenceEquals(_string, OriginalString));
2006ReadOnlySpan<char> str = _string;
2136_string = _string.Substring(0, idx);
2154_string = _string.Substring(0, idx);
2302Debug.Assert(_string.AsSpan(0, idx).SequenceEqual(OriginalString.AsSpan(0, idx)));
2318idx = _string.IndexOf('@') + 1;
2432string host = CreateHostStringHelper(_string, _info.Offset.Host, _info.Offset.Path, ref flags, _info);
2485host[i] != _string[_info.Offset.Host + i])
2590if ((_info.Offset.Host + i) >= _info.Offset.End || host[i] != _string[_info.Offset.Host + i])
2662else if (IsDosPath && _string[_info.Offset.Path + SecuredPathIndex - 1] == '|')
2697else if (IsDosPath && _string[_info.Offset.Path + SecuredPathIndex - 1] == '|')
2720string str = _string;
2737string str = _string;
2984return _string.Substring(_info.Offset.Scheme, _info.Offset.Path - _info.Offset.Scheme);
2987_string.AsSpan(_info.Offset.Scheme, _info.Offset.User - _info.Offset.Scheme),
2988_string.AsSpan(_info.Offset.Host, _info.Offset.Path - _info.Offset.Host));
2997return _string.Substring(_info.Offset.Host, _info.Offset.Path - _info.Offset.Host);
2999return string.Concat(_string.AsSpan(_info.Offset.Host, _info.Offset.Path - _info.Offset.Host),
3004if (_info.Offset.Scheme == 0 && _info.Offset.End == _string.Length)
3005return _string;
3007return _string.Substring(_info.Offset.Scheme, _info.Offset.End - _info.Offset.Scheme);
3014_string.AsSpan(_info.Offset.Scheme, _info.Offset.User - _info.Offset.Scheme),
3015_string.AsSpan(_info.Offset.Host, _info.Offset.Fragment - _info.Offset.Host));
3017if (_info.Offset.Scheme == 0 && _info.Offset.Fragment == _string.Length)
3018return _string;
3020return _string.Substring(_info.Offset.Scheme, _info.Offset.Fragment - _info.Offset.Scheme);
3024return _string.Substring(_info.Offset.Scheme, _info.Offset.Path - _info.Offset.Scheme);
3028if (_info.Offset.Scheme == 0 && _info.Offset.Fragment == _string.Length)
3029return _string;
3031return _string.Substring(_info.Offset.Scheme, _info.Offset.Fragment - _info.Offset.Scheme);
3037return _string.Substring(_info.Offset.Scheme, _info.Offset.User - _info.Offset.Scheme);
3047while (_string[--idx] != ':')
3050return (idx - _info.Offset.Host == 0) ? string.Empty : _string.Substring(_info.Offset.Host,
3057_info.Offset.End > _info.Offset.Path && _string[_info.Offset.Path] == '/')
3066return _string.Substring(delimiterAwareIdx, _info.Offset.Query - delimiterAwareIdx);
3078return _string.Substring(delimiterAwareIdx, _info.Offset.Fragment - delimiterAwareIdx);
3090return _string.Substring(delimiterAwareIdx, _info.Offset.End - delimiterAwareIdx);
3094_string.Substring(_info.Offset.User, _info.Offset.Path - _info.Offset.User);
3100return string.Concat(_string.AsSpan(_info.Offset.User, _info.Offset.Path - _info.Offset.User),
3104return _string.Substring(_info.Offset.Path, _info.Offset.Fragment - _info.Offset.Path);
3110_string.AsSpan(_info.Offset.Scheme, _info.Offset.User - _info.Offset.Scheme),
3111_string.AsSpan(_info.Offset.Host, _info.Offset.End - _info.Offset.Host));
3113if (_info.Offset.Scheme == 0 && _info.Offset.End == _string.Length)
3114return _string;
3116return _string.Substring(_info.Offset.Scheme, _info.Offset.End - _info.Offset.Scheme);
3119return _string.Substring(_info.Offset.Path, _info.Offset.End - _info.Offset.Path);
3135return _string.Substring(_info.Offset.User, delimiterAwareIdx - _info.Offset.User);
3175int length = _string.Length;
3181GetLengthWithoutTrailingSpaces(_string, ref length, idx);
3189ReadOnlySpan<char> str = _string.AsSpan(idx);
3219result = CheckCanonical(_string.AsSpan(idx, _info.Offset.Host - idx), '@', out _);
3262_info.Offset.User = _string.Length;
3263_info.Offset.Host = _string.Length;
3267Debug.Assert(!ReferenceEquals(_string, OriginalString));
3270_info.Offset.Path = _string.Length;
3280_string = string.Concat(_string, _originalUnicodeString.AsSpan(origIdx));
3283string str = _string;
3342length = _string.Length;
3344if (_string == _originalUnicodeString)
3346GetLengthWithoutTrailingSpaces(_string, ref length, idx);
3355result = CheckCanonical(_string.AsSpan(idx, length - idx), delim, out int checkedChars);
3370&& (_info.Offset.Path == length || _string[_info.Offset.Path] is not ('/' or '\\')))
3469length = _string.Length;
3471if (_string == _originalUnicodeString)
3473GetLengthWithoutTrailingSpaces(_string, ref length, idx);
3480if (idx < length && _string[idx] == '?')
3483result = CheckCanonical(_string.AsSpan(idx, length - idx), (syntaxFlags & (UriSyntaxFlags.MayHaveFragment)) != 0 ? '#' : c_EOL, out int charsChecked);
3519length = _string.Length;
3521GetLengthWithoutTrailingSpaces(_string, ref length, idx);
3527if (idx < length && _string[idx] == '#')
3531result = CheckCanonical(_string.AsSpan(idx, length - idx), c_EOL, out int checkedChars);
4255dest.Append(_string.AsSpan(_info.Offset.Path, _info.Offset.Query - _info.Offset.Path));
4271ReadOnlySpan<char> str = _string;
4287dest.Append(_string.AsSpan(_info.Offset.Path, _info.Offset.Query - _info.Offset.Path));
4308dest.Append(_string.AsSpan(_info.Offset.Path, _info.Offset.Query - _info.Offset.Path));
System\UriExt.cs (17)
19[MemberNotNull(nameof(_string))]
39ParsingError err = ParseScheme(_string, ref _flags, ref _syntax!);
53if (IriParsing && CheckForUnicodeOrEscapedUnreserved(_string))
57_originalUnicodeString = _string; // original string location changed
96((_string.Length >= 2 && (_string[0] != '\\' || _string[1] != '\\'))
385string str = _string;
799if (ReferenceEquals(newUriString, baseUri._string))
809return UriHelper.EscapeString(_string, checkExistingEscaped: true, UriHelper.UnreservedReserved);
813return UnescapeDataString(_string);
817if (_string.Length == 0)
821UriHelper.UnescapeString(_string, ref vsb, c_DummyChar, c_DummyChar, c_DummyChar, UnescapeMode.EscapeUnescape, null, false);
952[MemberNotNull(nameof(_string))]
980while (otherUri._string[portIndex] != ':' && portIndex > otherUri._info.Offset.Host)
984if (otherUri._string[portIndex] != ':')
996_string = otherUri._string;