Katakanlah saya punya array ini,
int[] numbers = {1, 3, 4, 9, 2};
Bagaimana saya bisa menghapus elemen dengan "nama"? , katakanlah nomor 4?
Bahkan ArrayList
tidak membantu menghapus?
string strNumbers = " 1, 3, 4, 9, 2";
ArrayList numbers = new ArrayList(strNumbers.Split(new char[] { ',' }));
numbers.RemoveAt(numbers.IndexOf(4));
foreach (var n in numbers)
{
Response.Write(n);
}
Jawaban:
Jika Anda ingin menghapus semua instance 4 tanpa perlu tahu indeksnya:
LINQ: (.NET Framework 3.5)
Non-LINQ: (.NET Framework 2.0)
Jika Anda ingin menghapus hanya contoh pertama:
LINQ: (.NET Framework 3.5)
Non-LINQ: (.NET Framework 2.0)
Sunting: Jika Anda belum menemukan jawabannya, seperti yang ditunjukkan Malfist, Anda harus menargetkan .NET Framework 3.5 agar contoh kode LINQ berfungsi. Jika Anda menargetkan 2.0, Anda perlu merujuk contoh-contoh Non-LINQ.
sumber
sumber
Anda juga dapat mengubah array Anda menjadi daftar dan memanggil penghapusan pada daftar. Anda kemudian dapat mengonversi kembali ke array Anda.
sumber
Kode yang ditulis dalam pertanyaan memiliki bug di dalamnya
Daftar array Anda mengandung string "1" "3" "4" "9" dan "2" (perhatikan spasi)
Jadi IndexOf (4) tidak akan menemukan apa pun karena 4 adalah int, dan bahkan "tostring" akan mengubahnya menjadi dari "4" dan bukan "4", dan tidak ada yang akan dihapus.
Arraylist adalah cara yang benar untuk melakukan apa yang Anda inginkan.
sumber
List<T>
akan lebih baik daripada ArrayList, ini tampaknya menjadi satu-satunya jawaban yang mengidentifikasi dengan benar masalah yang dimiliki OP ketika ia mencoba menggunakan ArrayList untuk menyelesaikan masalah aslinya. OP memahami bahwa Anda tidak dapat mengubah ukuran array, yang tampaknya tidak diketahui orang lain, dan mencoba menggunakan tipe yang dapat diubah ukurannya, yang tampaknya tidak diketahui orang lain, dan kemudian tersandung oleh masalah yang berbeda, yang tampaknya tidak terlihat oleh orang lain. telah memperhatikan.Jawaban Balabaster benar jika Anda ingin menghapus semua instance elemen. Jika Anda ingin menghapus hanya yang pertama, Anda akan melakukan sesuatu seperti ini:
sumber
Saya memposting solusi saya di sini .
Ini adalah cara untuk menghapus elemen array tanpa menyalin ke array lain - hanya dalam bingkai contoh array yang sama:
sumber
Menghapus dari sebuah array itu sendiri tidak mudah, karena Anda harus berurusan dengan mengubah ukuran. Ini adalah salah satu keuntungan besar menggunakan sesuatu seperti
List<int>
gantinya. Ini menyediakanRemove
/RemoveAt
dalam 2.0, dan banyak ekstensi LINQ untuk 3.0.Jika Anda bisa, refactor untuk menggunakan
List<>
atau serupa.sumber
Sebagai ekstensi generik, kompatibel dengan 2,0:
Pemakaian:
sumber
' Untuk menghapus item dari string berdasarkan nilai kunci Kamus. 'Kode VB.net
sumber
Anda bisa melakukannya dengan cara ini:
sumber