Span<T> Struktur
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Menyediakan representasi jenis aman dan aman memori dari wilayah memori arbitrer yang berdekatan.
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)
Jenis parameter
- T
Jenis item dalam Span<T>.
- Warisan
- Atribut
Keterangan
Jenis Span<T> adalah ref struct yang dialokasikan di stack daripada pada heap yang dikelola. Jenis struct Ref memiliki beberapa batasan untuk memastikan bahwa mereka tidak dapat dipromosikan ke tumpukan terkelola, termasuk bahwa mereka tidak dapat:
- Kotak.
- Ditetapkan ke variabel jenis Object atau
dynamic, atau ke antarmuka apa pun yang salah ketik. - Bidang dalam jenis referensi.
- Digunakan di seluruh
awaitdanyieldbatasan.
Selain itu, panggilan ke dua metode, Equals(Object) dan GetHashCode, menghasilkan NotSupportedException.
Important
Karena ini adalah jenis tumpukan-saja, Span<T> tidak cocok untuk banyak skenario yang memerlukan penyimpanan referensi ke buffer pada heap. Ini benar, misalnya, rutinitas yang melakukan panggilan metode asinkron. Untuk skenario tersebut, Anda dapat menggunakan jenis komplementer System.Memory<T> dan System.ReadOnlyMemory<T>.
Untuk "span" yang mewakili struktur yang tidak dapat diubah atau hanya dapat dibaca, gunakan System.ReadOnlySpan<T>.
Memory
Span<T> mewakili wilayah memori sewenang-wenang yang berdekatan. Instans Span<T> sering digunakan untuk menahan elemen array atau sebagian array. Namun, tidak seperti array, Span<T> instans dapat menunjuk ke memori terkelola, memori asli, atau memori yang dikelola pada tumpukan. Contoh berikut membuat Span<Byte> dari array:
// 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
Contoh berikut membuat Span<Byte> dari 100 byte memori asli:
// 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
Contoh berikut menggunakan kata kunci stackalloc C# untuk mengalokasikan 100 byte memori pada tumpukan:
// 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
Karena Span<T> merupakan abstraksi atas blok memori semena-mena, metode jenis Span<T> dan metode dengan Span<T> parameter beroperasi pada objek apa pun Span<T> terlepas dari jenis memori yang dienkapsulasinya. Misalnya, setiap bagian kode terpisah yang menginisialisasi rentang dan menghitung jumlah elemennya dapat direfaktorkan menjadi metode inisialisasi dan perhitungan tunggal, seperti yang diilustrasikan contoh berikut:
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
Array
Ketika membungkus array, Span<T> dapat membungkus seluruh array, seperti yang terjadi pada contoh di bagian Memori . Karena mendukung pemotongan, Span<T> juga dapat menunjuk ke rentang kontinu dalam array.
Contoh berikut membuat sebuah slice dari lima elemen tengah dalam sebuah array dengan 10 elemen bilangan bulat. Perhatikan bahwa kode menggandakan nilai dari setiap bilangan bulat dalam potongan. Seperti yang ditunjukkan oleh output, perubahan yang dilakukan oleh span tercermin dalam nilai-nilai array.
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
Irisan
Span<T> mencakup dua overload dari metode Slice yang membentuk potongan dari span saat ini yang dimulai pada indeks tertentu. Hal ini memungkinkan untuk memperlakukan data dalam Span<T> sekumpulan gugus logis yang dapat diproses sesuai kebutuhan oleh bagian alur pemrosesan data dengan dampak performa minimal. Misalnya, karena protokol server modern sering kali berbasis teks, manipulasi string dan substring sangat penting.
String Di kelas ini, metode utama untuk mengekstrak substring adalah Substring. Untuk alur data yang mengandalkan manipulasi string yang luas, penggunaannya menawarkan beberapa penalti performa, karena:
- Membuat string baru untuk menahan substring.
- Menyalin subset karakter dari string asli ke string baru.
Operasi alokasi dan penyalinan ini dapat dihilangkan dengan menggunakan Span<T> atau ReadOnlySpan<T>, seperti yang ditunjukkan contoh berikut:
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
Konstruktor
| Nama | Deskripsi |
|---|---|
| Span<T>(T) |
Membuat baru Span<T> panjang 1 di sekitar referensi yang ditentukan. |
| Span<T>(T[], Int32, Int32) |
Membuat objek baru Span<T> yang menyertakan sejumlah elemen array tertentu yang dimulai pada indeks tertentu. |
| Span<T>(T[]) |
Membuat objek baru Span<T> di atas keseluruhan array tertentu. |
| Span<T>(Void*, Int32) |
Membuat objek baru Span<T> dari sejumlah |
Properti
| Nama | Deskripsi |
|---|---|
| Empty |
Mengembalikan objek kosong Span<T> . |
| IsEmpty |
Mengembalikan nilai yang menunjukkan apakah saat ini Span<T> kosong. |
| Item[Int32] |
Mendapatkan elemen pada indeks berbasis nol yang ditentukan. |
| Length |
Mengembalikan panjang rentang saat ini. |
Metode
| Nama | Deskripsi |
|---|---|
| Clear() |
Menghapus isi objek ini Span<T> . |
| CopyTo(Span<T>) | |
| Equals(Object) |
Kedaluwarsa.
Kedaluwarsa.
Panggilan ke metode ini tidak didukung. |
| Fill(T) |
Mengisi elemen rentang ini dengan nilai tertentu. |
| GetEnumerator() |
Mengembalikan enumerator untuk .Span<T> |
| GetHashCode() |
Kedaluwarsa.
Melempar .NotSupportedException |
| GetPinnableReference() |
Mengembalikan referensi ke objek jenis T yang dapat digunakan untuk penyematan. Metode ini dimaksudkan untuk mendukung pengkompilasi .NET dan tidak dimaksudkan untuk dipanggil oleh kode pengguna. |
| Slice(Int32, Int32) |
Membentuk ikatan dari rentang saat ini yang dimulai pada indeks tertentu untuk panjang yang ditentukan. |
| Slice(Int32) |
Membentuk ikatan dari rentang saat ini yang dimulai pada indeks tertentu. |
| ToArray() |
Menyalin isi rentang ini ke dalam array baru. |
| ToString() |
Mengembalikan representasi string objek ini Span<T> . |
| TryCopyTo(Span<T>) |
Mencoba menyalin saat ini Span<T> ke tujuan Span<T> dan mengembalikan nilai yang menunjukkan apakah operasi salin berhasil. |
Operator
| Nama | Deskripsi |
|---|---|
| Equality(Span<T>, Span<T>) |
Mengembalikan nilai yang menunjukkan apakah dua Span<T> objek sama. |
| Implicit(ArraySegment<T> to Span<T>) |
Menentukan konversi implisit dari ke ArraySegment<T>Span<T>. |
| Implicit(Span<T> to ReadOnlySpan<T>) |
Mendefinisikan konversi implisit dari ke Span<T>ReadOnlySpan<T>. |
| Implicit(T[] to Span<T>) |
Menentukan konversi implisit array ke Span<T>. |
| Inequality(Span<T>, Span<T>) |
Mengembalikan nilai yang menunjukkan apakah dua Span<T> objek tidak sama. |
Metode Ekstensi
| Nama | Deskripsi |
|---|---|
| BinarySearch<T,TComparable>(Span<T>, TComparable) |
Mencari seluruh yang diurutkan Span<T> untuk nilai menggunakan jenis generik yang ditentukan |
| BinarySearch<T,TComparer>(Span<T>, T, TComparer) |
Mencari seluruh yang diurutkan Span<T> untuk nilai tertentu menggunakan jenis generik yang ditentukan |
| BinarySearch<T>(Span<T>, IComparable<T>) |
Mencari seluruh yang diurutkan Span<T> untuk nilai menggunakan antarmuka generik yang ditentukan IComparable<T> . |
| CommonPrefixLength<T>(Span<T>, ReadOnlySpan<T>, IEqualityComparer<T>) |
Menemukan panjang awalan umum yang dibagikan antara |
| CommonPrefixLength<T>(Span<T>, ReadOnlySpan<T>) |
Menemukan panjang awalan umum yang dibagikan antara |
| Contains<T>(Span<T>, T) |
Menunjukkan apakah nilai yang ditentukan ditemukan dalam rentang. |
| ContainsAny<T>(Span<T>, ReadOnlySpan<T>) |
Mencari kemunculan salah satu dari yang ditentukan |
| ContainsAny<T>(Span<T>, SearchValues<T>) |
Mencari kemunculan salah satu dari yang ditentukan |
| ContainsAny<T>(Span<T>, T, T, T) |
Mencari kemunculan |
| ContainsAny<T>(Span<T>, T, T) |
Mencari kemunculan |
| ContainsAnyExcept<T>(Span<T>, ReadOnlySpan<T>) |
Mencari rentang yang ditentukan untuk nilai apa pun selain yang ditentukan |
| ContainsAnyExcept<T>(Span<T>, SearchValues<T>) |
Mencari rentang yang ditentukan untuk nilai apa pun selain yang ditentukan |
| ContainsAnyExcept<T>(Span<T>, T, T, T) |
Mencari nilai apa pun selain |
| ContainsAnyExcept<T>(Span<T>, T, T) |
Mencari rentang yang ditentukan untuk nilai apa pun selain |
| ContainsAnyExcept<T>(Span<T>, T) |
Mencari rentang yang ditentukan untuk nilai apa pun selain yang ditentukan |
| ContainsAnyExceptInRange<T>(Span<T>, T, T) |
Mencari nilai apa pun di luar rentang antara |
| ContainsAnyInRange<T>(Span<T>, T, T) |
Mencari nilai apa pun dalam rentang antara |
| Count<T>(Span<T>, ReadOnlySpan<T>) |
Menghitung berapa kali yang ditentukan |
| Count<T>(Span<T>, T) |
Menghitung berapa kali yang ditentukan |
| EndsWith<T>(Span<T>, ReadOnlySpan<T>) |
Menentukan apakah urutan yang ditentukan muncul di akhir rentang. |
| IndexOf<T>(Span<T>, ReadOnlySpan<T>) |
Mencari urutan yang ditentukan dan mengembalikan indeks kemunculan pertamanya. |
| IndexOf<T>(Span<T>, T) |
Mencari nilai yang ditentukan dan mengembalikan indeks kemunculan pertamanya. |
| IndexOfAny<T>(Span<T>, ReadOnlySpan<T>) |
Mencari indeks pertama dari salah satu nilai yang ditentukan. |
| IndexOfAny<T>(Span<T>, SearchValues<T>) |
Mencari indeks pertama dari salah satu nilai yang ditentukan. |
| IndexOfAny<T>(Span<T>, T, T, T) |
Mencari indeks pertama dari salah satu nilai yang ditentukan. |
| IndexOfAny<T>(Span<T>, T, T) |
Mencari indeks pertama dari salah satu nilai yang ditentukan. |
| IndexOfAnyExcept<T>(Span<T>, ReadOnlySpan<T>) |
Mencari indeks pertama dari nilai apa pun selain yang ditentukan |
| IndexOfAnyExcept<T>(Span<T>, SearchValues<T>) |
Mencari indeks pertama dari nilai apa pun selain yang ditentukan |
| IndexOfAnyExcept<T>(Span<T>, T, T, T) |
Mencari indeks pertama dari nilai apa pun selain |
| IndexOfAnyExcept<T>(Span<T>, T, T) |
Mencari indeks pertama dari nilai apa pun selain dua nilai yang ditentukan. |
| IndexOfAnyExcept<T>(Span<T>, T) |
Mencari indeks pertama dari nilai apa pun selain yang ditentukan |
| IndexOfAnyExceptInRange<T>(Span<T>, T, T) |
Mencari indeks pertama dari nilai apa pun di luar rentang antara |
| IndexOfAnyInRange<T>(Span<T>, T, T) |
Mencari indeks pertama dari nilai apa pun dalam rentang antara |
| LastIndexOf<T>(Span<T>, ReadOnlySpan<T>) |
Mencari urutan yang ditentukan dan mengembalikan indeks kemunculan terakhirnya. |
| LastIndexOf<T>(Span<T>, T) |
Mencari nilai yang ditentukan dan mengembalikan indeks kemunculan terakhirnya. |
| LastIndexOfAny<T>(Span<T>, ReadOnlySpan<T>) |
Mencari indeks terakhir dari salah satu nilai yang ditentukan. |
| LastIndexOfAny<T>(Span<T>, SearchValues<T>) |
Mencari indeks terakhir dari salah satu nilai yang ditentukan. |
| LastIndexOfAny<T>(Span<T>, T, T, T) |
Mencari indeks terakhir dari salah satu nilai yang ditentukan. |
| LastIndexOfAny<T>(Span<T>, T, T) |
Mencari indeks terakhir dari salah satu nilai yang ditentukan. |
| LastIndexOfAnyExcept<T>(Span<T>, ReadOnlySpan<T>) |
Mencari indeks terakhir dari nilai apa pun selain yang ditentukan |
| LastIndexOfAnyExcept<T>(Span<T>, SearchValues<T>) |
Mencari indeks terakhir dari nilai apa pun selain yang ditentukan |
| LastIndexOfAnyExcept<T>(Span<T>, T, T, T) |
Mencari indeks terakhir dari nilai apa pun selain yang ditentukan |
| LastIndexOfAnyExcept<T>(Span<T>, T, T) |
Mencari indeks terakhir dari nilai apa pun selain yang ditentukan |
| LastIndexOfAnyExcept<T>(Span<T>, T) |
Mencari indeks terakhir dari nilai apa pun selain yang ditentukan |
| LastIndexOfAnyExceptInRange<T>(Span<T>, T, T) |
Mencari indeks terakhir dari nilai apa pun di luar rentang antara |
| LastIndexOfAnyInRange<T>(Span<T>, T, T) |
Mencari indeks terakhir dari nilai apa pun dalam rentang antara |
| Overlaps<T>(Span<T>, ReadOnlySpan<T>, Int32) |
Menentukan apakah rentang dan rentang baca-saja tumpang tindih dalam memori dan menghasilkan offset elemen. |
| Overlaps<T>(Span<T>, ReadOnlySpan<T>) |
Menentukan apakah rentang dan rentang baca-saja tumpang tindih dalam memori. |
| Replace<T>(Span<T>, T, T, IEqualityComparer<T>) |
Menghapus semua kejadian |
| Replace<T>(Span<T>, T, T) |
Menghapus semua kejadian |
| ReplaceAny<T>(Span<T>, SearchValues<T>, T) |
Mengganti semua |
| ReplaceAnyExcept<T>(Span<T>, SearchValues<T>, T) |
Mengganti di |
| Reverse<T>(Span<T>) |
Membalikkan urutan elemen di seluruh rentang. |
| SequenceCompareTo<T>(Span<T>, ReadOnlySpan<T>) |
Menentukan urutan relatif rentang dan rentang baca-saja dengan membandingkan elemen menggunakan IComparable{T}. CompareTo(T). |
| SequenceEqual<T>(Span<T>, ReadOnlySpan<T>, IEqualityComparer<T>) |
Menentukan apakah dua urutan sama dengan membandingkan elemen menggunakan IEqualityComparer<T>. |
| SequenceEqual<T>(Span<T>, ReadOnlySpan<T>) |
Menentukan apakah rentang dan rentang baca-saja sama dengan membandingkan elemen menggunakan IEquatable{T}. Sama dengan(T). |
| Sort<T,TComparer>(Span<T>, TComparer) |
Mengurutkan elemen di seluruh Span<T> menggunakan |
| Sort<T>(Span<T>, Comparison<T>) |
Mengurutkan elemen di seluruh Span<T> menggunakan yang ditentukan Comparison<T>. |
| Sort<T>(Span<T>) |
Mengurutkan elemen di seluruh Span<T> menggunakan IComparable<T> implementasi setiap elemen Span<T>. |
| Sort<TKey,TValue,TComparer>(Span<TKey>, Span<TValue>, TComparer) |
Mengurutkan sepasang rentang (satu yang berisi kunci dan yang lain yang berisi item yang sesuai) berdasarkan kunci di yang pertama Span<T> menggunakan pembanding yang ditentukan. |
| Sort<TKey,TValue>(Span<TKey>, Span<TValue>, Comparison<TKey>) |
Mengurutkan sepasang rentang (satu yang berisi kunci dan yang lain yang berisi item terkait) berdasarkan kunci di yang pertama Span<T> menggunakan perbandingan yang ditentukan. |
| Sort<TKey,TValue>(Span<TKey>, Span<TValue>) |
Mengurutkan sepasang rentang (satu yang berisi kunci dan yang lain yang berisi item yang sesuai) berdasarkan kunci di yang pertama Span<T> menggunakan IComparable<T> implementasi setiap kunci. |
| StartsWith<T>(Span<T>, ReadOnlySpan<T>) |
Menentukan apakah urutan yang ditentukan muncul di awal rentang. |
| ToImmutableArray<T>(Span<T>) |
Mengonversi rentang menjadi array yang tidak dapat diubah. |
| Trim<T>(Span<T>, ReadOnlySpan<T>) |
Menghapus semua kemunculan awal dan akhir dari sekumpulan elemen yang ditentukan dalam rentang baca-saja dari rentang. |
| Trim<T>(Span<T>, T) |
Menghapus semua kemunculan awal dan akhir dari elemen tertentu dari rentang. |
| TrimEnd<T>(Span<T>, ReadOnlySpan<T>) |
Menghapus semua kemunculan berikutnya dari sekumpulan elemen yang ditentukan dalam rentang baca-saja dari rentang. |
| TrimEnd<T>(Span<T>, T) |
Menghapus semua kemunculan berikutnya dari elemen tertentu dari rentang. |
| TrimStart<T>(Span<T>, ReadOnlySpan<T>) |
Menghapus semua kemunculan awal dari sekumpulan elemen yang ditentukan dalam rentang baca-saja dari rentang. |
| TrimStart<T>(Span<T>, T) |
Menghapus semua kemunculan awal elemen tertentu dari rentang. |