Bagikan melalui


CA1858: Gunakan StartsWith alih-alih IndexOf

Properti Nilai
ID Aturan CA1858
Judul Gunakan StartsWith alih-alih IndexOf
Golongan Performa
Perbaikan bersifat disruptif atau non-disruptif Non-disruptif
Diaktifkan secara default di .NET 8 Sebagai saran

Penyebab

String.IndexOf dipanggil dan hasilnya dibandingkan dengan nol.

Deskripsi aturan

Lebih efisien dan lebih jelas untuk memanggil String.StartsWith daripada memanggil String.IndexOf dan membandingkan hasilnya dengan nol untuk menentukan apakah string dimulai dengan awalan tertentu.

IndexOf mencari seluruh string, sementara StartsWith hanya membandingkan di awal string.

Cara memperbaiki pelanggaran

Ganti panggilan ke String.IndexOf dengan panggilan ke String.StartsWith.

Contoh

Cuplikan kode berikut menunjukkan pelanggaran CA1858:

bool M(string s)
{
    return s.IndexOf("abc") == 0;
}
Function M(s As String) As Boolean
    Return s.IndexOf("abc") = 0
End Function

Cuplikan kode berikut memperbaiki pelanggaran:

bool M(string s)
{
    return s.StartsWith("abc");
}
Function M(s As String) As Boolean
    Return s.StartsWith("abc")
End Function

Kapan harus menekan peringatan

Aman untuk menekan peringatan ini jika performa tidak menjadi perhatian.

Menyembunyikan peringatan

Jika Anda hanya ingin menyembunyikan satu pelanggaran, tambahkan arahan praprosedur ke file sumber Anda untuk dinonaktifkan lalu aktifkan kembali aturannya.

#pragma warning disable CA1858
// The code that's violating the rule is on this line.
#pragma warning restore CA1858

Untuk menonaktifkan aturan untuk file, folder, atau proyek, atur tingkat keparahannya ke none dalam file konfigurasi.

[*.{cs,vb}]
dotnet_diagnostic.CA1858.severity = none

Untuk informasi selengkapnya, lihat Cara menyembunyikan peringatan analisis kode.