また逆に、GetViewBetweenメソッドで取得したサブセットに変更を加えることもでき、この変更は元になったSortedSetにも反映されます。
GetViewBetweenメソッドで取得した部分集合を通して元のSortedSetに変更を加える
using System;
using System.Collections.Generic;
class Sample {
static void Main()
{
var s = new SortedSet<string>() {"Alice", "Eve", "Charlie", "Bob", "Dave"};
Console.Write("s: ");
Console.WriteLine(string.Join(", ", s));
// 最小で"B"、最大で"E"の範囲に該当する部分集合を取得する
var view = s.GetViewBetween("B", "E");
Console.Write("view: ");
Console.WriteLine(string.Join(", ", view));
// 取得した部分集合に変更を加える
// (取得した部分集合の元になるSortedSetにも影響する)
view.Add("Cyndy");
Console.Write("s: ");
Console.WriteLine(string.Join(", ", s));
}
}
実行結果
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>にキャストすることにより、読み取り専用のビューとして扱うことができるようになります。