diff --git a/src/libraries/System.Private.CoreLib/src/System/SearchValues/SearchValues.T.cs b/src/libraries/System.Private.CoreLib/src/System/SearchValues/SearchValues.T.cs
index 071d4c51495faa..3188dabe53b76e 100644
--- a/src/libraries/System.Private.CoreLib/src/System/SearchValues/SearchValues.T.cs
+++ b/src/libraries/System.Private.CoreLib/src/System/SearchValues/SearchValues.T.cs
@@ -14,13 +14,14 @@ namespace System.Buffers
///
/// are optimized for situations where the same set of values is frequently used for searching at runtime.
///
+ [DebuggerDisplay("{DebuggerDisplay,nq}")]
[DebuggerTypeProxy(typeof(SearchValuesDebugView<>))]
public class SearchValues where T : IEquatable?
{
// Only CoreLib can create derived types
private protected SearchValues() { }
- /// Used by .
+ /// Used by s and s for .
internal virtual T[] GetValues() => throw new UnreachableException();
///
@@ -80,5 +81,24 @@ internal static int LastIndexOfAnyExcept(ReadOnlySpan span, SearchValues v
return values.LastIndexOfAnyExcept(span);
}
+
+ private string DebuggerDisplay
+ {
+ get
+ {
+ T[] values = GetValues();
+
+ string display = $"{GetType().Name}, Count={values.Length}";
+ if (values.Length > 0)
+ {
+ display += ", Values=";
+ display += typeof(T) == typeof(char) ?
+ "\"" + new string(Unsafe.As(ref values)) + "\"" :
+ string.Join(",", values);
+ }
+
+ return display;
+ }
+ }
}
}
diff --git a/src/libraries/System.Private.CoreLib/src/System/SearchValues/SearchValuesDebugView.cs b/src/libraries/System.Private.CoreLib/src/System/SearchValues/SearchValuesDebugView.cs
index adfad1b278468a..00dda551581247 100644
--- a/src/libraries/System.Private.CoreLib/src/System/SearchValues/SearchValuesDebugView.cs
+++ b/src/libraries/System.Private.CoreLib/src/System/SearchValues/SearchValuesDebugView.cs
@@ -1,6 +1,8 @@
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
+using System.Diagnostics;
+
namespace System.Buffers
{
internal sealed class SearchValuesDebugView where T : IEquatable?
@@ -13,6 +15,7 @@ public SearchValuesDebugView(SearchValues values)
_values = values;
}
+ [DebuggerBrowsable(DebuggerBrowsableState.RootHidden)]
public T[] Values => _values.GetValues();
}
}