https://dotnettutorials.net/lesson/arraylist-collection-csharp/
c#中的数组列表是什么?
c#中的ArrayList是一个非泛型集合类,它的工作方式类似于数组,但提供了动态调整大小、从集合中间添加和删除元素等功能。c#中的ArrayList可以用来添加未知数据,也就是说,当我们不知道数据的类型和数据的大小时,我们可以使用ArrayList。
它用于创建动态数组,意味着数组的大小会根据程序的需要自动增加或减少。不需要指定数组列表的大小。在ArrayList中,可以存储相同类型的元素,也可以存储不同类型的元素。
c#中ArrayList类的属性
元素可以在任何时间点从Array List集合中添加和删除。
ArrayList不能保证被排序。
ArrayList的容量是指该数组列表可以容纳的元素数量。
可以使用整数索引访问此集合中的元素。此集合中的索引是从零开始的。
它允许重复元素。
如何在c#中创建数组列表?
c#中的ArrayList提供了以下三个构造函数,我们可以使用它们来创建ArrayList类的实例。
ArrayList():该方法用于初始化ArrayList类的一个新实例,该实例为空,初始容量为默认值。
ArrayList(ICollection c):该方法用于初始化ArrayList类的新实例,该实例包含从指定集合复制的元素,且初始容量与复制的元素数量相同。参数c指定将其元素复制到新列表的Collection。
ArrayList(int capacity):初始化ArrayList类的一个新实例,该实例为空,具有指定的初始容量。参数capacity指定新列表最初可以存储的元素数量。
首先,我们需要导入系统。然后可以使用第一个构造函数创建ArrayList的实例,如下所示。您可以使用以下任何一种语法:
如何在c#中添加元素到数组列表?
ArrayList非泛型类提供了Add()方法,我们可以使用该方法向数组列表中添加元素,甚至可以使用对象初始化语法向ArrayList中添加元素。最重要的一点是,我们可以在ArrayList中添加多个不同类型的元素,尽管也可以添加重复的元素。
让我们看一个例子来理解在c#中向ArrayList类型的集合中添加元素的两种方法。请看下面的例子。在这里,您可以看到,我们添加了不同类型的数据以及重复的数据,并且可以接受。
using System; using System.Collections; namespace Csharp8Features { public class ArrayListDemo { public static void Main() { //Adding elements to ArrayList using Add() method ArrayList arrayList1 = new ArrayList(); arrayList1.Add(101); //Adding Integer Value arrayList1.Add("James"); //Adding String Value arrayList1.Add("James"); //Adding Duplicate Value arrayList1.Add(" "); //Adding Empty arrayList1.Add(true); //Adding Boolean arrayList1.Add(4.5); //Adding double arrayList1.Add(null); //Adding null foreach (var item in arrayList1) { Console.WriteLine(item); } //Adding Elements to ArrayList using object initializer syntax var arrayList2 = new ArrayList() { 102, "Smith", "Smith", true, 15.6 }; foreach (var item in arrayList2) { Console.WriteLine(item); } Console.ReadKey(); } } }
如何在c#中访问数组列表?
如果您查看ArrayList的定义,那么您将看到ArrayList类实现了如下图所示的IList接口。因为它实现了IList接口,所以我们可以使用索引器访问元素,就像访问数组一样。索引从0开始,每个后续元素加1。因此,当一个集合类实现了IList接口时,我们就可以通过使用整数索引访问该集合的元素。
当将元素添加到ArrayList中时,它会自动将元素强制转换为对象类型,然后将它们存储在集合中。因此,在访问元素时需要显式转换为适当的类型,否则可以使用var变量。为了更好地理解,请看下面的例子。代码是自解释的,请通过注释。
using System; using System.Collections; namespace Csharp8Features { public class ArrayListDemo { public static void Main() { //Adding elements to ArrayList using Add() method ArrayList arrayList1 = new ArrayList(); arrayList1.Add(101); //Adding Integer Value arrayList1.Add("James"); //Adding String Value arrayList1.Add(true); //Adding Boolean arrayList1.Add(4.5); //Adding double //Accessing individual elements from ArrayList using Indexer int firstElement = (int)arrayList1[0]; //returns 101 string secondElement = (string)arrayList1[1]; //returns "James" //int secondElement = (int) arrayList1[1]; //Error: cannot cover string to int Console.WriteLine($"First Element: {firstElement}, Second Element: {secondElement}"); //Using var keyword without explicit casting var firsItem = arrayList1[0]; //returns 101 var secondItem = arrayList1[1]; //returns "James" //var fifthElement = arrayList1[5]; //Error: Index out of range Console.WriteLine($"First Item: {firsItem}, Second Item: {secondItem}"); //update elements arrayList1[0] = "Smith"; arrayList1[1] = 1010; //arrayList1[5] = 500; //Error: Index out of range foreach (var item in arrayList1) { Console.Write($"{item} "); } Console.ReadKey(); } } }
如何在c#中迭代数组列表?
如果您查看ArrayList的定义,那么您还会看到ArrayList非泛型集合类实现了如下图所示的ICollection接口。我们知道ICollection接口支持集合类型的迭代。因此,我们可以使用foreach循环和for循环来迭代ArrayList类型的集合。
数组列表的Count属性返回数组列表中存在的元素总数。让我们用一个例子来理解这一点。
using System; using System.Collections; namespace Csharp8Features { public class ArrayListDemo { public static void Main() { //Adding elements to ArrayList using Add() method ArrayList arrayList1 = new ArrayList(); arrayList1.Add(101); //Adding Integer Value arrayList1.Add("James"); //Adding String Value arrayList1.Add(true); //Adding Boolean arrayList1.Add(4.5); //Adding double //Iterating through foreach loop Console.WriteLine("Using ForEach Loop"); foreach (var item in arrayList1) { Console.Write($"{item} "); } //Iterating through for loop Console.WriteLine("\n\nUsing For Loop"); for (int i = 0; i < arrayList1.Count; i++) { Console.Write($"{arrayList1[i]} "); } Console.ReadKey(); } } }
如何在c#中插入一个元素到数组列表集合的指定位置?
Add方法将在集合的末尾添加元素,即在最后一个元素之后。但是,如果你想在指定的位置添加元素,那么你需要使用ArrayList类的Insert()方法,它将在指定的索引位置插入元素到集合中。下面给出了使用Insert方法的语法。
插入索引,对象?值);
这里,参数index指定应该插入值的索引位置,参数值指定要插入到列表中的对象。它基于一个零索引。为了更好地理解,请看下面的例子。
using System; using System.Collections; namespace Csharp8Features { public class ArrayListDemo { public static void Main() { ArrayList arrayList = new ArrayList() { 101, "James", true, 10.20 }; //Insert "First Element" at First Position i.e. Index 0 arrayList.Insert(0, "First Element"); //Insert "Third Element" at Third Position i.e. Index 2 arrayList.Insert(2, "Third Element"); //Iterating through foreach loop foreach (var item in arrayList) { Console.WriteLine($"{item}"); } Console.ReadKey(); } } }
如果有一个集合,并且希望将该集合插入Array List的另一个集合,那么可以使用InsertRange()方法。InsertRange()方法的作用是:将集合中的元素插入到指定索引处的ArrayList中。语法如下所示。
void InsertRange(int index, ICollection c)
这里,参数index指定新元素应该插入的位置,参数c指定将其元素插入ArrayList的Collection。集合本身不能为空,但它可以包含为空的元素。为了更好地理解,请看下面的例子。
using System; using System.Collections; namespace Csharp8Features { public class ArrayListDemo { public static void Main() { ArrayList arrayList1 = new ArrayList() { "India", "USA", "UK", "Nepal" }; Console.WriteLine("Array List Elements"); foreach (var item in arrayList1) { Console.Write($"{item} "); } ArrayList arrayList2 = new ArrayList() { "Srilanka", "Japan", "Britem" }; arrayList1.InsertRange(2, arrayList2); Console.WriteLine("\n\nArray List Elements After InsertRange"); foreach (var item in arrayList1) { Console.Write($"{item} "); } Console.ReadKey(); } } }
如何在c#中删除数组列表中的元素?
如果你想在c#中从ArrayList中删除元素,那么你可以使用c#中ArrayList类的remove (), RemoveAt()或RemoveRange()方法。
Remove(对象?obj):此方法用于从System.Collections.ArrayList中删除第一次出现的特定对象。参数obj指定要从数组列表中移除的对象。可以为空。
RemoveAt(int index):该方法用于移除ArrayList中指定索引处的元素。参数index指定要删除的元素的索引位置。
RemoveRange(int index, int count):这个方法用于从ArrayList中移除一段元素。参数index指定要删除的元素范围的起始索引位置,参数count指定要删除的元素数量。
为了更好地理解,请看下面的例子。
using System; using System.Collections; namespace Csharp8Features { public class ArrayListDemo { public static void Main() { ArrayList arrayList = new ArrayList() { "India", "USA", "UK", "Nepal", "HongKong", "Srilanka", "Japan", "Britem", "HongKong", }; Console.WriteLine("Array List Elements"); foreach (var item in arrayList) { Console.Write($"{item} "); } arrayList.Remove("HongKong"); //Removes first occurance of null Console.WriteLine("\n\nArray List Elements After Removing First Occurances of HongKong"); foreach (var item in arrayList) { Console.Write($"{item} "); } arrayList.RemoveAt(3); //Removes element at index postion 3, it is 0 based index Console.WriteLine("\n\nArray List1 Elements After Removing Element from Index 3"); foreach (var item in arrayList) { Console.Write($"{item} "); } arrayList.RemoveRange(0, 2);//Removes two elements starting from 1st item (0 index) Console.WriteLine("\n\nArray List Elements After Removing First Two Elements"); foreach (var item in arrayList) { Console.Write($"{item} "); } Console.ReadKey(); } } }
如何从c#中删除数组列表中的所有元素?
如果你想从ArrayList中删除所有元素或清除所有元素,那么你可以使用ArrayList类的clear()方法,但是这个方法不会减少ArrayList的容量。为了更好地理解,让我们看一个例子。
using System; using System.Collections; namespace Csharp8Features { public class ArrayListDemo { public static void Main() { ArrayList arrayList = new ArrayList() { "India", "USA", "UK", "Denmark", "Nepal", }; int totalItems = arrayList.Count; Console.WriteLine(string.Format($"Total Items: {totalItems}, Capacity: {arrayList.Capacity}")); //Remove all items from the Array list arrayList.Clear(); totalItems = arrayList.Count; Console.WriteLine(string.Format($"Total Items After Clear(): {totalItems}, Capacity: {arrayList.Capacity}")); Console.ReadKey(); } } }
标签:Console,C#,ArrayList,元素,Add,item,arrayList1 From: https://www.cnblogs.com/keeplearningandsharing/p/18184549