また逆に、GetViewBetweenメソッドで取得したサブセットに変更を加えることもでき、この変更は元になったSortedSetにも反映されます。

GetViewBetweenメソッドで取得した部分集合を通して元のSortedSetに変更を加える
Imports System
Imports System.Collections.Generic

Class Sample
  Shared Sub Main()
    Dim s As New SortedSet(Of String)() From {"Alice", "Eve", "Charlie", "Bob", "Dave"}

    Console.Write("s: ")
    Console.WriteLine(String.Join(", ", s))

    ' 最小で"B"、最大で"E"の範囲に該当する部分集合を取得する
    Dim view As SortedSet(Of String) = s.GetViewBetween("B", "E")

    Console.Write("view: ")
    Console.WriteLine(String.Join(", ", view))

    ' 取得した部分集合に変更を加える
    ' (取得した部分集合の元になるSortedSetにも影響する)
    view.Add("Cyndy")

    Console.Write("s: ")
    Console.WriteLine(String.Join(", ", s))
  End Sub
End Class
実行結果
s: Alice, Bob, Charlie, Dave, Eve, 
s: Alice, Bob, Charlie, Cyndy, Dave, Eve, 

SortedSetには、そのSortedSetがGetViewBetweenメソッドによって取得されたビューなのかどうかを判断するプロパティやメソッドは用意されていません。 そのため、GetViewBetweenメソッドによって取得したSortedSetに対して変更を行う際には、影響範囲に注意する必要があります。

.NET 5以降では、IReadOnlySet<T>インターフェイスが新たに導入されるため、GetViewBetweenメソッドで取得したSortedSetをIReadOnlySet<T>にキャストすることにより、読み取り専用のビューとして扱うことができるようになります。

MENTAにてテキストチャットによるサポートを行っています。 問題の解決法をお探しの方や.NET/C#を学習中の方はどうぞご利用ください。