HashSet<T>.TrimExcess Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Überlädt
TrimExcess() |
Legt die Kapazität eines HashSet<T> Objekts auf die tatsächliche Anzahl der darin enthaltenen Elemente fest, aufgerundet auf einen nahe gelegenen, implementierungsspezifischen Wert. |
TrimExcess(Int32) |
Legt die Kapazität eines HashSet<T>-Objekts auf die angegebene Anzahl von Einträgen fest, aufgerundet auf einen nahe gelegenen, implementierungsspezifischen Wert. |
TrimExcess()
- Quelle:
- HashSet.cs
- Quelle:
- HashSet.cs
- Quelle:
- HashSet.cs
Legt die Kapazität eines HashSet<T> Objekts auf die tatsächliche Anzahl der darin enthaltenen Elemente fest, aufgerundet auf einen nahe gelegenen, implementierungsspezifischen Wert.
public:
void TrimExcess();
public void TrimExcess ();
member this.TrimExcess : unit -> unit
Public Sub TrimExcess ()
Beispiele
Im folgenden Beispiel wird eine HashSet<T> -Auflistung erstellt und aufgefüllt. Anschließend werden die Auflistung gelöscht und der von ihr referenzierte Speicher freigegeben.
HashSet<int> Numbers = new HashSet<int>();
for (int i = 0; i < 10; i++)
{
Numbers.Add(i);
}
Console.Write("Numbers contains {0} elements: ", Numbers.Count);
DisplaySet(Numbers);
Numbers.Clear();
Numbers.TrimExcess();
Console.Write("Numbers contains {0} elements: ", Numbers.Count);
DisplaySet(Numbers);
void DisplaySet(HashSet<int> set)
{
Console.Write("{");
foreach (int i in set)
{
Console.Write(" {0}", i);
}
Console.WriteLine(" }");
}
/* This example produces output similar to the following:
* Numbers contains 10 elements: { 0 1 2 3 4 5 6 7 8 9 }
* Numbers contains 0 elements: { }
*/
let displaySet (set: HashSet<int>) =
printf "{"
for i in set do
printf $" {i}"
printfn " }"
// This example produces output similar to the following:
// Numbers contains 10 elements: { 0 1 2 3 4 5 6 7 8 9 }
// Numbers contains 0 elements: { }
let numbers = HashSet<int>()
for i = 0 to 9 do
numbers.Add i |> ignore
printf $"Numbers contains {numbers.Count} elements: "
displaySet numbers
numbers.Clear()
numbers.TrimExcess()
printf $"Numbers contains {numbers.Count} elements: "
displaySet numbers
Imports System.Collections.Generic
Class Program
Shared Sub Main()
Dim Numbers As HashSet(Of Integer) = New HashSet(Of Integer)()
For i As Integer = 0 To 9
Numbers.Add(i)
Next i
Console.Write("Numbers contains {0} elements: ", Numbers.Count)
DisplaySet(Numbers)
Numbers.Clear()
Numbers.TrimExcess()
Console.Write("Numbers contains {0} elements: ", Numbers.Count)
DisplaySet(Numbers)
End Sub
' This code example produces output similar to the following:
' Numbers contains 10 elements: { 0 1 2 3 4 5 6 7 8 9 }
' Numbers contains 0 elements: { }
Private Shared Sub DisplaySet(ByVal coll As HashSet(Of Integer))
Console.Write("{")
For Each i As Integer In coll
Console.Write(" {0}", i)
Next i
Console.WriteLine(" }")
End Sub
End Class
Hinweise
Sie können die TrimExcess-Methode verwenden, um den Arbeitsspeicheraufwand eines HashSet<T> Objekts zu minimieren, sobald bekannt ist, dass keine neuen Elemente hinzugefügt werden. Rufen Sie diese Methode nach dem Aufrufen der Clear-Methode auf, um ein HashSet<T>-Objekt vollständig zu löschen und den gesamten Speicher freizugeben, auf den verwiesen wird.
Diese Methode ist ein O(n
) Vorgang, bei dem n
Countist.
Gilt für:
TrimExcess(Int32)
- Quelle:
- HashSet.cs
Legt die Kapazität eines HashSet<T>-Objekts auf die angegebene Anzahl von Einträgen fest, aufgerundet auf einen nahe gelegenen, implementierungsspezifischen Wert.
public:
void TrimExcess(int capacity);
public void TrimExcess (int capacity);
member this.TrimExcess : int -> unit
Public Sub TrimExcess (capacity As Integer)
Parameter
- capacity
- Int32
Die neue Kapazität.
Ausnahmen
Die angegebene Kapazität ist niedriger als die Anzahl der Einträge.