HashSet<T>.SymmetricExceptWith(IEnumerable<T>) メソッド

定義

現在の HashSet<T> オブジェクトを、そのオブジェクトと指定されたコレクションの (両方に存在するのではなく) どちらか一方に存在する要素だけが格納されるように変更します。Modifies the current HashSet<T> object to contain only elements that are present either in that object or in the specified collection, but not both.

public:
 virtual void SymmetricExceptWith(System::Collections::Generic::IEnumerable<T> ^ other);
public:
 void SymmetricExceptWith(System::Collections::Generic::IEnumerable<T> ^ other);
public void SymmetricExceptWith (System.Collections.Generic.IEnumerable<T> other);
[System.Security.SecurityCritical]
public void SymmetricExceptWith (System.Collections.Generic.IEnumerable<T> other);
abstract member SymmetricExceptWith : seq<'T> -> unit
override this.SymmetricExceptWith : seq<'T> -> unit
[<System.Security.SecurityCritical>]
member this.SymmetricExceptWith : seq<'T> -> unit
[<System.Security.SecurityCritical>]
abstract member SymmetricExceptWith : seq<'T> -> unit
override this.SymmetricExceptWith : seq<'T> -> unit
Public Sub SymmetricExceptWith (other As IEnumerable(Of T))

パラメーター

other
IEnumerable<T>

現在の HashSet<T> オブジェクトと比較するコレクション。The collection to compare to the current HashSet<T> object.

実装

属性

例外

othernullです。other is null.

次の例では、 HashSet<T> 重複するデータのセットを含む2つのコレクションを作成します。The following example creates two HashSet<T> collections with overlapping sets of data. その後、小さい方の値を含むセットが、メソッドを使用して変更され、 SymmetricExceptWith 両方のセットに存在しない値のみが含まれるようになります。The set that contains the lower values is then modified, using the SymmetricExceptWith method, to contain only the values that are not present in both sets.

HashSet<int> lowNumbers = new HashSet<int>();
HashSet<int> highNumbers = new HashSet<int>();

for (int i = 0; i < 6; i++)
{
    lowNumbers.Add(i);
}

for (int i = 3; i < 10; i++)
{
    highNumbers.Add(i);
}

Console.Write("lowNumbers contains {0} elements: ", lowNumbers.Count);
DisplaySet(lowNumbers);

Console.Write("highNumbers contains {0} elements: ", highNumbers.Count);
DisplaySet(highNumbers);

Console.WriteLine("lowNumbers SymmetricExceptWith highNumbers...");
lowNumbers.SymmetricExceptWith(highNumbers);

Console.Write("lowNumbers contains {0} elements: ", lowNumbers.Count);
DisplaySet(lowNumbers);

void DisplaySet(HashSet<int> set)
{
    Console.Write("{");
    foreach (int i in set)
    {
        Console.Write(" {0}", i);
    }
    Console.WriteLine(" }");
}

/* This example provides output similar to the following:
* lowNumbers contains 6 elements: { 0 1 2 3 4 5 }
* highNumbers contains 7 elements: { 3 4 5 6 7 8 9 }
* lowNumbers SymmetricExceptWith highNumbers...
* lowNumbers contains 7 elements: { 0 1 2 8 7 6 9 }
*/
Shared Sub Main()

    Dim lowNumbers As HashSet(Of Integer) = New HashSet(Of Integer)()
    Dim highNumbers As HashSet(Of Integer) = New HashSet(Of Integer)()

    For i As Integer = 0 To 5
        lowNumbers.Add(i)
    Next i

    For i As Integer = 3 To 9
        highNumbers.Add(i)
    Next i

    Console.Write("lowNumbers contains {0} elements: ", lowNumbers.Count)
    DisplaySet(lowNumbers)

    Console.Write("highNumbers contains {0} elements: ", highNumbers.Count)
    DisplaySet(highNumbers)

    Console.WriteLine("lowNumbers SymmetricExceptWith highNumbers...")
    lowNumbers.SymmetricExceptWith(highNumbers)

    Console.Write("lowNumbers contains {0} elements: ", lowNumbers.Count)
    DisplaySet(lowNumbers)
End Sub
' This example produces output similar to the following:
' lowNumbers contains 6 elements: { 0 1 2 3 4 5 }
' highNumbers contains 7 elements: { 3 4 5 6 7 8 9 }
' lowNumbers SymmetricExceptWith highNumbers...
' lowNumbers contains 7 elements: { 0 1 2 8 7 6 9 }

注釈

otherパラメーターが、現在の HashSet<T> オブジェクトと同じ等値比較子を持つコレクションの場合 HashSet<T> 、このメソッドは O ( n ) 操作になります。If the other parameter is a HashSet<T> collection with the same equality comparer as the current HashSet<T> object, this method is an O(n) operation. それ以外の場合、このメソッドは O ( n + m ) 演算です n 。ここで、はの要素の数で other あり、 mCount です。Otherwise, this method is an O(n + m) operation, where n is the number of elements in other and m is Count.

適用対象