Span<T> Struktur

Definition

Stellt eine typsichere und speichersichere Darstellung eines zusammenhängenden Bereichs eines beliebigen Speichers bereit.

generic <typename T>
public value class Span
[System.Runtime.InteropServices.Marshalling.NativeMarshalling(typeof(System.Runtime.InteropServices.Marshalling.SpanMarshaller<,>))]
public readonly ref struct Span<T>
public readonly ref struct Span<T>
[<System.Runtime.InteropServices.Marshalling.NativeMarshalling(typeof(System.Runtime.InteropServices.Marshalling.SpanMarshaller<,>))>]
type Span<'T> = struct
type Span<'T> = struct
Public Structure Span(Of T)

Typparameter

T

Der Typ der Elemente in der Span<T>.

Vererbung
Span<T>
Attribute

Hinweise

Der Span<T> Typ ist eine Referenzstruktur , die auf dem Stapel zugewiesen wird, anstatt auf dem verwalteten Heap. Verweistypen weisen einige Einschränkungen auf, um sicherzustellen, dass sie nicht zum verwalteten Heap heraufgestuft werden können, einschließlich der Folgenden:

  • Boxed.
  • Variablen vom Typ Object oder dynamic, oder einem beliebigen Schnittstellentyp zugewiesen.
  • Felder in einem Bezugstyp.
  • Wird über- und await grenzenübergreifend yield verwendet.

Aufrufe an zwei Methoden, Equals(Object) und GetHashCode, werfen ein NotSupportedException.

Important

Da es sich um einen stapelgebundenen Typ handelt, ist er für viele Szenarien, in denen Verweise auf Puffer im Heap gespeichert werden müssen, nicht geeignet. Dies gilt beispielsweise für Routinen, die asynchrone Methodenaufrufe ausführen. Für solche Szenarien können Sie die ergänzenden System.Memory<T> Und System.ReadOnlyMemory<T> Typen verwenden.

Verwenden Sie System.ReadOnlySpan<T>für Spannen, die unveränderliche oder schreibgeschützte Strukturen darstellen.

Gedächtnis

A Span<T> stellt einen zusammenhängenden Bereich des beliebigen Speichers dar. Eine Span<T> Instanz wird häufig verwendet, um die Elemente eines Arrays oder eines Teils eines Arrays zu enthalten. Im Gegensatz zu einem Array kann eine Span<T> Instanz jedoch auf verwalteten Speicher, systemeigenen Speicher oder auf den im Stapel verwalteten Speicher verweisen. Im folgenden Beispiel wird ein Span<Byte> aus einem Array erzeugt:

// Create a span over an array.
var array = new byte[100];
var arraySpan = new Span<byte>(array);

byte data = 0;
for (int ctr = 0; ctr < arraySpan.Length; ctr++)
    arraySpan[ctr] = data++;

int arraySum = 0;
foreach (var value in array)
    arraySum += value;

Console.WriteLine($"The sum is {arraySum}");
// Output:  The sum is 4950
// Create a span over an array.
let array = Array.zeroCreate<byte> 100
let arraySpan = Span<byte> array

let mutable data = 0uy
for i = 0 to arraySpan.Length - 1 do
    arraySpan[i] <- data
    data <- data + 1uy

let mutable arraySum = 0
for value in array do
    arraySum <- arraySum + int value

printfn $"The sum is {arraySum}"
// Output:  The sum is 4950

Im folgenden Beispiel wird ein Span<Byte> aus 100 Bytes nativem Speicher erstellt.

// Create a span from native memory.
var native = Marshal.AllocHGlobal(100);
Span<byte> nativeSpan;
unsafe
{
    nativeSpan = new Span<byte>(native.ToPointer(), 100);
}
byte data = 0;
for (int ctr = 0; ctr < nativeSpan.Length; ctr++)
    nativeSpan[ctr] = data++;

int nativeSum = 0;
foreach (var value in nativeSpan)
    nativeSum += value;

Console.WriteLine($"The sum is {nativeSum}");
Marshal.FreeHGlobal(native);
// Output:  The sum is 4950
// Create a span from native memory.
let native = Marshal.AllocHGlobal 100
let nativeSpan = Span<byte>(native.ToPointer(), 100)

let mutable data = 0uy
for i = 0 to nativeSpan.Length - 1 do
    nativeSpan[i] <- data
    data <- data + 1uy

let mutable nativeSum = 0
for value in nativeSpan do
    nativeSum <- nativeSum + int value

printfn $"The sum is {nativeSum}"
Marshal.FreeHGlobal native
// Output:  The sum is 4950

Im folgenden Beispiel wird das Schlüsselwort "C# stackalloc " verwendet, um 100 Bytes Arbeitsspeicher auf dem Stapel zuzuweisen:

// Create a span on the stack.
byte data = 0;
Span<byte> stackSpan = stackalloc byte[100];
for (int ctr = 0; ctr < stackSpan.Length; ctr++)
    stackSpan[ctr] = data++;

int stackSum = 0;
foreach (var value in stackSpan)
    stackSum += value;

Console.WriteLine($"The sum is {stackSum}");
// Output:  The sum is 4950
    // Create a span on the stack.
    let mutable data = 0uy
    let stackSpan = 
        let p = NativeInterop.NativePtr.stackalloc<byte> 100 |> NativeInterop.NativePtr.toVoidPtr
        Span<byte>(p, 100)

    for i = 0 to stackSpan.Length - 1 do
        stackSpan[i] <- data
        data <- data + 1uy

    let mutable stackSum = 0
    for value in stackSpan do
        stackSum <- stackSum + int value

    printfn $"The sum is {stackSum}"
// Output:  The sum is 4950

Da Span<T> eine Abstraktion über einen beliebigen Speicherblock ist, arbeiten Methoden des Span<T>-Typs und Methoden mit Span<T>-Parametern mit jedem Span<T>-Objekt, unabhängig von der Art des Speichers, den es kapselt. Beispielsweise können alle separaten Codeabschnitte, die die Spanne initialisieren und die Summe der Elemente berechnen, in einzelne Initialisierungs- und Berechnungsmethoden umgestaltet werden, wie im folgenden Beispiel veranschaulicht wird:

public static void WorkWithSpans()
{
    // Create a span over an array.
    var array = new byte[100];
    var arraySpan = new Span<byte>(array);

    InitializeSpan(arraySpan);
    Console.WriteLine($"The sum is {ComputeSum(arraySpan):N0}");

    // Create an array from native memory.
    var native = Marshal.AllocHGlobal(100);
    Span<byte> nativeSpan;
    unsafe
    {
        nativeSpan = new Span<byte>(native.ToPointer(), 100);
    }

    InitializeSpan(nativeSpan);
    Console.WriteLine($"The sum is {ComputeSum(nativeSpan):N0}");

    Marshal.FreeHGlobal(native);

    // Create a span on the stack.
    Span<byte> stackSpan = stackalloc byte[100];

    InitializeSpan(stackSpan);
    Console.WriteLine($"The sum is {ComputeSum(stackSpan):N0}");
}

public static void InitializeSpan(Span<byte> span)
{
    byte value = 0;
    for (int ctr = 0; ctr < span.Length; ctr++)
        span[ctr] = value++;
}

public static int ComputeSum(Span<byte> span)
{
    int sum = 0;
    foreach (var value in span)
        sum += value;

    return sum;
}
// The example displays the following output:
//    The sum is 4,950
//    The sum is 4,950
//    The sum is 4,950
open System
open System.Runtime.InteropServices
open FSharp.NativeInterop

// Package FSharp.NativeInterop.NativePtr.stackalloc for reuse.
let inline stackalloc<'a when 'a: unmanaged> length : Span<'a> =
    let voidPointer = NativePtr.stackalloc<'a> length |> NativePtr.toVoidPtr
    Span<'a>(voidPointer, length)

let initializeSpan (span: Span<byte>) =
    let mutable value = 0uy
    for i = 0 to span.Length - 1 do
        span[i] <- value
        value <- value + 1uy

let computeSum (span: Span<byte>) =
    let mutable sum = 0
    for value in span do
        sum <- sum + int value
    sum

let workWithSpans () =
    // Create a span over an array.
    let array = Array.zeroCreate<byte> 100
    let arraySpan = Span<byte> array

    initializeSpan arraySpan
    printfn $"The sum is {computeSum arraySpan:N0}"

    // Create an array from native memory.
    let native = Marshal.AllocHGlobal 100
    let nativeSpan = Span<byte>(native.ToPointer(), 100)

    initializeSpan nativeSpan
    printfn $"The sum is {computeSum nativeSpan:N0}"

    Marshal.FreeHGlobal native

    // Create a span on the stack.
    let stackSpan = stackalloc 100

    initializeSpan stackSpan
    printfn $"The sum is {computeSum stackSpan:N0}"

// The example displays the following output:
//    The sum is 4,950
//    The sum is 4,950
//    The sum is 4,950

Felder

Wenn es ein Array umbricht, kann Span<T> ein gesamtes Array umschließen, wie in den Beispielen im Abschnitt Speicher gezeigt. Weil Slicing unterstützt wird, kann Span<T> auch auf jeden zusammenhängenden Bereich innerhalb des Arrays verweisen.

Im folgenden Beispiel wird ein Segment der mittleren fünf Elemente eines ganzzahligen Arrays mit 10 Elementen erstellt. Beachten Sie, dass der Code die Werte jeder ganzen Zahl im Segment verdoppelt. Wie die Ausgabe zeigt, spiegeln sich die von der Spanne vorgenommenen Änderungen in den Werten des Arrays wider.

using System;

var array = new int[] { 2, 4, 6, 8, 10, 12, 14, 16, 18, 20 };
var slice = new Span<int>(array, 2, 5);
for (int ctr = 0; ctr < slice.Length; ctr++)
    slice[ctr] *= 2;

// Examine the original array values.
foreach (var value in array)
    Console.Write($"{value}  ");
Console.WriteLine();

// The example displays the following output:
//      2  4  12  16  20  24  28  16  18  20
module Program

open System

[<EntryPoint>]
let main _ =
    let array = [| 2; 4; 6; 8; 10; 12; 14; 16; 18; 20 |]
    let slice = Span<int>(array, 2, 5)
    for i = 0 to slice.Length - 1 do
        slice[i] <- slice[i] * 2

    // Examine the original array values.
    for value in array do
        printf $"{value}  "
    printfn ""
    0
// The example displays the following output:
//      2  4  12  16  20  24  28  16  18  20

Scheiben

Span<T> enthält zwei Überladungen der Slice Methode, die einen Datenschnitt aus der aktuellen Spanne bilden, die bei einem angegebenen Index beginnt. Dadurch können die Daten in einer Span<T> als eine Menge von logischen Abschnitten behandelt werden, die nach Bedarf von Teilen einer Datenverarbeitungspipeline mit minimaler Leistungsbeeinträchtigung verarbeitet werden können. Da beispielsweise moderne Serverprotokolle häufig textbasiert sind, ist die Manipulation von Zeichenfolgen und Teilzeichenfolgen besonders wichtig. In der String Klasse ist Substringdie Hauptmethode zum Extrahieren von Teilzeichenfolgen . Für Datenpipelines, die auf umfangreiche Zeichenfolgenmanipulation angewiesen sind, bringt ihre Verwendung einige Leistungseinbußen mit sich, da sie:

  1. Erstellt eine neue Zeichenfolge, die die Teilzeichenfolge enthält.
  2. Kopiert eine Teilmenge der Zeichen aus der ursprünglichen Zeichenfolge in die neue Zeichenfolge.

Dieser Zuordnungs- und Kopiervorgang kann eliminiert werden, indem entweder Span<T> oder ReadOnlySpan<T> verwendet wird, wie im folgenden Beispiel gezeigt:

using System;

class Program2
{
    static void Run()
    {
        string contentLength = "Content-Length: 132";
        var length = GetContentLength(contentLength.ToCharArray());
        Console.WriteLine($"Content length: {length}");
    }

    private static int GetContentLength(ReadOnlySpan<char> span)
    {
        var slice = span.Slice(16);
        return int.Parse(slice);
    }
}
// Output:
//      Content length: 132
module Program2

open System

let getContentLength (span: ReadOnlySpan<char>) =
    let slice = span.Slice 16
    Int32.Parse slice

let contentLength = "Content-Length: 132"
let length = getContentLength (contentLength.ToCharArray())
printfn $"Content length: {length}"
// Output:
//      Content length: 132

Konstruktoren

Name Beschreibung
Span<T>(T)

Erstellt eine neue Span<T> Länge 1 um den angegebenen Bezug.

Span<T>(T[], Int32, Int32)

Erstellt ein neues Span<T> Objekt, das eine bestimmte Anzahl von Elementen eines Arrays enthält, beginnend mit einem angegebenen Index.

Span<T>(T[])

Erstellt ein neues Span<T> Objekt über die gesamte Anzahl eines angegebenen Arrays.

Span<T>(Void*, Int32)

Erstellt ein neues Span<T> Objekt aus einer angegebenen Anzahl von T Elementen, die mit einer angegebenen Speicheradresse beginnen.

Eigenschaften

Name Beschreibung
Empty

Gibt ein leeres Span<T> Objekt zurück.

IsEmpty

Gibt einen Wert zurück, der angibt, ob der aktuelle Span<T> Wert leer ist.

Item[Int32]

Ruft das Element am angegebenen nullbasierten Index ab.

Length

Gibt die Länge der aktuellen Spanne zurück.

Methoden

Name Beschreibung
Clear()

Löscht den Inhalt dieses Span<T> Objekts.

CopyTo(Span<T>)

Kopiert den Inhalt dieses Span<T> Elements in ein Ziel Span<T>.

Equals(Object)
Veraltet.
Veraltet.

Aufrufe dieser Methode werden nicht unterstützt.

Fill(T)

Füllt die Elemente dieser Spanne mit einem angegebenen Wert aus.

GetEnumerator()

Gibt einen Enumerator für diesen Span<T>Wert zurück.

GetHashCode()
Veraltet.

Löst eine NotSupportedException aus.

GetPinnableReference()

Gibt einen Verweis auf ein Objekt vom Typ T zurück, das zum Anheften verwendet werden kann.

Diese Methode soll .NET Compiler unterstützen und nicht vom Benutzercode aufgerufen werden.

Slice(Int32, Int32)

Bildet ein Segment aus der aktuellen Spanne, beginnend bei einem angegebenen Index für eine angegebene Länge.

Slice(Int32)

Bildet ein Segment aus der aktuellen Spanne, die mit einem angegebenen Index beginnt.

ToArray()

Kopiert den Inhalt dieser Spanne in ein neues Array.

ToString()

Gibt die Zeichenfolgendarstellung dieses Span<T> Objekts zurück.

TryCopyTo(Span<T>)

Versucht, den aktuellen Span<T> Wert in ein Ziel Span<T> zu kopieren, und gibt einen Wert zurück, der angibt, ob der Kopiervorgang erfolgreich war.

Operatoren

Name Beschreibung
Equality(Span<T>, Span<T>)

Gibt einen Wert zurück, der angibt, ob zwei Span<T> Objekte gleich sind.

Implicit(ArraySegment<T> to Span<T>)

Definiert eine implizite Konvertierung einer ArraySegment<T> in eine Span<T>.

Implicit(Span<T> to ReadOnlySpan<T>)

Definiert eine implizite Konvertierung eines in Span<T> ein .ReadOnlySpan<T>

Implicit(T[] to Span<T>)

Definiert eine implizite Konvertierung eines Arrays in ein Span<T>.

Inequality(Span<T>, Span<T>)

Gibt einen Wert zurück, der angibt, ob zwei Span<T> Objekte nicht gleich sind.

Erweiterungsmethoden

Name Beschreibung
BinarySearch<T,TComparable>(Span<T>, TComparable)

Sucht einen vollständig sortierten Span<T> Wert mithilfe des angegebenen TComparable generischen Typs.

BinarySearch<T,TComparer>(Span<T>, T, TComparer)

Sucht einen vollständig sortierten Span<T> Nach einem angegebenen Wert mithilfe des angegebenen TComparer generischen Typs.

BinarySearch<T>(Span<T>, IComparable<T>)

Sucht einen vollständig sortierten Span<T> Wert mithilfe der angegebenen IComparable<T> generischen Schnittstelle.

CommonPrefixLength<T>(Span<T>, ReadOnlySpan<T>, IEqualityComparer<T>)

Sucht die Länge eines gemeinsamen Präfixes, das zwischen span und .other

CommonPrefixLength<T>(Span<T>, ReadOnlySpan<T>)

Sucht die Länge eines gemeinsamen Präfixes, das zwischen span und .other

Contains<T>(Span<T>, T)

Gibt an, ob ein angegebener Wert in einer Spanne gefunden wird.

ContainsAny<T>(Span<T>, ReadOnlySpan<T>)

Sucht nach einem Vorkommen eines der angegebenen values und gibt zurück true , wenn es gefunden wurde. Wenn sie nicht gefunden wird, wird zurückgegeben false.

ContainsAny<T>(Span<T>, SearchValues<T>)

Sucht nach einem Vorkommen eines der angegebenen values und gibt zurück true , wenn es gefunden wurde. Wenn sie nicht gefunden wird, wird zurückgegeben false.

ContainsAny<T>(Span<T>, T, T, T)

Sucht nach einem Vorkommen von value0, value1, oder value2 in der angegebenen Spanne.

ContainsAny<T>(Span<T>, T, T)

Sucht nach einem Vorkommen von value0 oder , value1und gibt zurück true , wenn gefunden. Wenn sie nicht gefunden wird, wird zurückgegeben false.

ContainsAnyExcept<T>(Span<T>, ReadOnlySpan<T>)

Durchsucht die angegebene Spanne nach einem anderen Wert als dem angegebenen values.

ContainsAnyExcept<T>(Span<T>, SearchValues<T>)

Durchsucht die angegebene Spanne nach einem anderen Wert als dem angegebenen values.

ContainsAnyExcept<T>(Span<T>, T, T, T)

Sucht nach einem anderen Wert als value0, value1oder value2.

ContainsAnyExcept<T>(Span<T>, T, T)

Durchsucht die angegebene Spanne nach einem anderen Wert als value0 oder value1.

ContainsAnyExcept<T>(Span<T>, T)

Durchsucht die angegebene Spanne nach einem anderen Wert als dem angegebenen value.

ContainsAnyExceptInRange<T>(Span<T>, T, T)

Sucht nach einem beliebigen Wert außerhalb des Bereichs zwischen lowInclusive und highInclusiveeinschließlich.

ContainsAnyInRange<T>(Span<T>, T, T)

Sucht nach einem beliebigen Wert im Bereich zwischen lowInclusive und highInclusiveeinschließlich und gibt true zurück, wenn er gefunden wird. Wenn sie nicht gefunden wird, wird zurückgegeben false.

Count<T>(Span<T>, ReadOnlySpan<T>)

Zählt die Häufigkeit, mit der die angegebene Zahl in der value.span

Count<T>(Span<T>, T)

Zählt die Häufigkeit, mit der die angegebene Zahl in der value.span

EndsWith<T>(Span<T>, ReadOnlySpan<T>)

Bestimmt, ob die angegebene Sequenz am Ende einer Spanne angezeigt wird.

IndexOf<T>(Span<T>, ReadOnlySpan<T>)

Sucht nach der angegebenen Sequenz und gibt den Index des ersten Vorkommens zurück.

IndexOf<T>(Span<T>, T)

Sucht nach dem angegebenen Wert und gibt den Index des ersten Vorkommens zurück.

IndexOfAny<T>(Span<T>, ReadOnlySpan<T>)

Sucht nach dem ersten Index eines der angegebenen Werte.

IndexOfAny<T>(Span<T>, SearchValues<T>)

Sucht nach dem ersten Index eines der angegebenen Werte.

IndexOfAny<T>(Span<T>, T, T, T)

Sucht nach dem ersten Index eines der angegebenen Werte.

IndexOfAny<T>(Span<T>, T, T)

Sucht nach dem ersten Index eines der angegebenen Werte.

IndexOfAnyExcept<T>(Span<T>, ReadOnlySpan<T>)

Sucht nach dem ersten Index eines anderen Werts als dem angegebenen values.

IndexOfAnyExcept<T>(Span<T>, SearchValues<T>)

Sucht nach dem ersten Index eines anderen Werts als dem angegebenen values.

IndexOfAnyExcept<T>(Span<T>, T, T, T)

Sucht nach dem ersten Index eines anderen Werts als value0, value1oder value2.

IndexOfAnyExcept<T>(Span<T>, T, T)

Sucht nach dem ersten Index eines anderen Werts als den beiden angegebenen Werten.

IndexOfAnyExcept<T>(Span<T>, T)

Sucht nach dem ersten Index eines anderen Werts als dem angegebenen value.

IndexOfAnyExceptInRange<T>(Span<T>, T, T)

Sucht nach dem ersten Index eines beliebigen Werts außerhalb des Bereichs zwischen lowInclusive und highInclusiveeinschließlich.

IndexOfAnyInRange<T>(Span<T>, T, T)

Sucht nach dem ersten Index eines beliebigen Werts im Bereich zwischen lowInclusive und highInclusiveeinschließlich.

LastIndexOf<T>(Span<T>, ReadOnlySpan<T>)

Sucht nach der angegebenen Sequenz und gibt den Index des letzten Vorkommens zurück.

LastIndexOf<T>(Span<T>, T)

Sucht nach dem angegebenen Wert und gibt den Index des letzten Vorkommens zurück.

LastIndexOfAny<T>(Span<T>, ReadOnlySpan<T>)

Sucht nach dem letzten Index eines der angegebenen Werte.

LastIndexOfAny<T>(Span<T>, SearchValues<T>)

Sucht nach dem letzten Index eines der angegebenen Werte.

LastIndexOfAny<T>(Span<T>, T, T, T)

Sucht nach dem letzten Index eines der angegebenen Werte.

LastIndexOfAny<T>(Span<T>, T, T)

Sucht nach dem letzten Index eines der angegebenen Werte.

LastIndexOfAnyExcept<T>(Span<T>, ReadOnlySpan<T>)

Sucht nach dem letzten Index eines anderen Werts als dem angegebenen values.

LastIndexOfAnyExcept<T>(Span<T>, SearchValues<T>)

Sucht nach dem letzten Index eines anderen Werts als dem angegebenen values.

LastIndexOfAnyExcept<T>(Span<T>, T, T, T)

Sucht nach dem letzten Index eines anderen Werts als dem angegebenen value0, value1oder value2.

LastIndexOfAnyExcept<T>(Span<T>, T, T)

Sucht nach dem letzten Index eines anderen Werts als dem angegebenen value0 oder value1.

LastIndexOfAnyExcept<T>(Span<T>, T)

Sucht nach dem letzten Index eines anderen Werts als dem angegebenen value.

LastIndexOfAnyExceptInRange<T>(Span<T>, T, T)

Sucht nach dem letzten Index eines beliebigen Werts außerhalb des Bereichs zwischen lowInclusive und highInclusiveeinschließlich.

LastIndexOfAnyInRange<T>(Span<T>, T, T)

Sucht nach dem letzten Index eines beliebigen Werts im Bereich zwischen lowInclusive und highInclusiveeinschließlich.

Overlaps<T>(Span<T>, ReadOnlySpan<T>, Int32)

Bestimmt, ob eine Spanne und eine schreibgeschützte Überschneidung im Arbeitsspeicher überlappen und den Elementoffset ausgibt.

Overlaps<T>(Span<T>, ReadOnlySpan<T>)

Bestimmt, ob eine Spanne und eine schreibgeschützte Überschneidung im Arbeitsspeicher überlappen.

Replace<T>(Span<T>, T, T, IEqualityComparer<T>)

Diese Funktion ersetzt alle Vorkommen von oldValue durch newValue.

Replace<T>(Span<T>, T, T)

Diese Funktion ersetzt alle Vorkommen von oldValue durch newValue.

ReplaceAny<T>(Span<T>, SearchValues<T>, T)

Ersetzt in span allen Vorkommen eines der Elemente durch valuesnewValue.

ReplaceAnyExcept<T>(Span<T>, SearchValues<T>, T)

Ersetzt in span allen Elementen, die nicht in values, durch newValue.

Reverse<T>(Span<T>)

Kehrt die Reihenfolge der Elemente in der gesamten Spanne um.

SequenceCompareTo<T>(Span<T>, ReadOnlySpan<T>)

Bestimmt die relative Reihenfolge einer Spanne und einer schreibgeschützten Spanne, indem die Elemente mithilfe von "IComparable{T}" verglichen werden. CompareTo(T).

SequenceEqual<T>(Span<T>, ReadOnlySpan<T>, IEqualityComparer<T>)

Bestimmt, ob zwei Sequenzen gleich sind, indem die Elemente mithilfe einer IEqualityComparer<T>.

SequenceEqual<T>(Span<T>, ReadOnlySpan<T>)

Bestimmt, ob eine Spanne und eine schreibgeschützte Spanne gleich sind, indem die Elemente mithilfe von IEquatable{T} verglichen werden. Entspricht(T).

Sort<T,TComparer>(Span<T>, TComparer)

Sortiert die Elemente im gesamten Span<T> Element mithilfe der TComparer.

Sort<T>(Span<T>, Comparison<T>)

Sortiert die Elemente in der gesamten Span<T> Mithilfe des angegebenen Comparison<T>.

Sort<T>(Span<T>)

Sortiert die Elemente in der gesamten Span<T> Mithilfe der IComparable<T> Implementierung der einzelnen Elemente der .Span<T>

Sort<TKey,TValue,TComparer>(Span<TKey>, Span<TValue>, TComparer)

Sortiert ein Spannenpaar (eins mit den Schlüsseln und das andere, das die entsprechenden Elemente enthält) basierend auf den Schlüsseln in der ersten Span<T> Verwendung des angegebenen Vergleichs.

Sort<TKey,TValue>(Span<TKey>, Span<TValue>, Comparison<TKey>)

Sortiert ein Spannenpaar (eins mit den Schlüsseln und das andere, das die entsprechenden Elemente enthält) basierend auf den Schlüsseln in der ersten Span<T> Verwendung des angegebenen Vergleichs.

Sort<TKey,TValue>(Span<TKey>, Span<TValue>)

Sortiert ein Spannenpaar (eins mit den Schlüsseln und das andere, das die entsprechenden Elemente enthält) basierend auf den Schlüsseln in der ersten Span<T> Verwendung der IComparable<T> Implementierung jedes Schlüssels.

StartsWith<T>(Span<T>, ReadOnlySpan<T>)

Bestimmt, ob eine angegebene Sequenz am Anfang einer Spanne angezeigt wird.

ToImmutableArray<T>(Span<T>)

Wandelt die Spanne in ein unveränderliches Array um.

Trim<T>(Span<T>, ReadOnlySpan<T>)

Entfernt alle führenden und nachgestellten Vorkommen einer Gruppe von Elementen, die in einer schreibgeschützten Spanne von einer Spanne angegeben sind.

Trim<T>(Span<T>, T)

Entfernt alle führenden und nachfolgenden Vorkommen eines angegebenen Elements aus einer Spanne.

TrimEnd<T>(Span<T>, ReadOnlySpan<T>)

Entfernt alle nachfolgenden Vorkommen einer Gruppe von Elementen, die in einer schreibgeschützten Spanne von einer Spanne angegeben sind.

TrimEnd<T>(Span<T>, T)

Entfernt alle nachfolgenden Vorkommen eines angegebenen Elements aus einer Spanne.

TrimStart<T>(Span<T>, ReadOnlySpan<T>)

Entfernt alle führenden Vorkommen einer Gruppe von Elementen, die in einer schreibgeschützten Spanne von der Spanne angegeben sind.

TrimStart<T>(Span<T>, T)

Entfernt alle führenden Vorkommen eines angegebenen Elements aus der Spanne.

Gilt für:

Weitere Informationen