今天学习了C#中的 非泛型集合ArrayList 和 泛型集合List:
先来看非泛型集合:使用非泛型集合之前注意调用 System.Collections
using System;
using System.Collections;
namespace Lesson21_2
{
//集合
//集合分为非泛型集合和泛型集合
//使用非泛型集合需要引入命名空间 System.Collections
//非泛型集合不是太常用
class MainClass
{
public static void Main (string[] args)
{
//1.首先创建对象
ArrayList a = new ArrayList ();
//2.使用方法 Add() 添加元素,对元素类型没有限制
a.Add (17);
a.Add (63.5f);
//3.使用 [下标] 来获取指定位置的元素,注意下标不能越界
Console.WriteLine (a[0]);
//4.通过count来获取当前数组中元素的数量
int count = a.Count;
//5.使用insert () 方法向指定下标位置插入元素,只能在当前数组的末尾之前插入,不然报错
// 在中间插入的时候后面的元素下标+1
a.Insert (2,"dzzhyk");
Console.WriteLine (a[2]);
//6.使用 remove() 方法从数组中删除一个元素,是直接删除这个名字的元素
// 删除了之后是后面的元素都向前移一位
a.Remove (17);
Console.WriteLine (a[0]);
//7.使用RemoveAt() 方法,将指定位置的元素删除
a.RemoveAt (0);
Console.WriteLine (a[0]);
//8.Contains(元素) 是否存在这个元素
bool flag = a.Contains ("dzzhyk");
if (flag) {
Console.WriteLine ("YES");
}
//9.Clear() 清空数组
a.Clear ();
flag = a.Contains ("dzzhyk");
if (!flag) {
Console.WriteLine ("NO");
}
}
}
}
ArrayList 和 普通数组的区别主要是在于:普通数组具有明确大小而非泛型集合具有动态大小,可以根据数据量的多少调整大小
由于非泛型集合在使用的时候对于集合中的元素没有明确的类型限制,因此具有危险性,所以不常用。
再来看泛型数组List:
泛型数组List是强类型的集合,因此在使用之前一定要确定类型,用尖括号表示。
在使用泛型集合List之前,需要先 using System.Collections.Generic
using System;
using System.Collections.Generic;
using System.Collections;
namespace Lesson22_2
{
//泛型集合 List (强类型)
//使用泛型集合需要先引入命名空间System.Collections.Generic
//List 在大多数情况下比 ArrayList 执行的更好并且类型是安全的
class MainClass
{
public static void Main (string[] args)
{
//声明一个List对象a,需要声明类型
List <string> a = new List<string>() ;
//1.Add()向数组中添加元素
a.Add ("dzzhyk");
a.Add ("hello");
a.Add ("nihao");
//2.Insert(位置,元素) 方法插入元素
a.Insert (1,"dzzhyk");
//3.Remove(元素)删除指定元素
a.Remove ("dzzhyk");
//4.RemoveAt(下标) 删除指定下标位置的元素
a.RemoveAt (1);
//5.Count 获取当前 List 中元素的个数
int c = a.Count;
//6.使用Contains(元素) 判断指定的元素是否存在于List中
a.Contains ("dzzhyk");
//7.Clear () 清空整个 List
a.Clear ();
//8.可以通过下标访问List中的元素
a[2] = "dzzhyk";
//对比非泛型集合
ArrayList b = new ArrayList ();
b.Add ("dzzhyk");
b.Add (152);
b.Add (12.7885f);
//非泛型集合不能将a[0]直接输出,因为在 ArrayList 中添加元素的时候,系统将他们全部存储为
//object格式
//因此 ArrayList 使用的效率比较低,因为会有类型转换的过程
//string s = a [0];
}
}
}