非范型ArrayList和泛型List<T>

ArrayList 是 C# 中的一个非泛型集合类,它属于 System.Collections 命名空间。它提供了动态数组的功能,允许你在运行时添加、删除和访问元素。然而,需要注意的是,ArrayList 并不是类型安全的,因为你可以向其中添加任何类型的对象,这可能会在后续处理元素时引发问题,比如类型转换错误。

创建 ArrayList

在 C# 中,你可以这样创建一个 ArrayList:

csharp

复制

using System;

using System.Collections;

class Program

{

static void Main()

{

ArrayList myArrayList = new ArrayList();

复制代码
    // 添加元素
    myArrayList.Add(1);
    myArrayList.Add("Hello");
    myArrayList.Add(3.14);

    // 遍历 ArrayList
    foreach(object item in myArrayList)
    {
        Console.WriteLine(item);
    }
}

}

在这个例子中,ArrayList 包含了不同类型的对象(int、string 和 double)。这展示了 ArrayList 的灵活性,但也揭示了它类型不安全的缺点。

访问元素

你可以通过索引访问 ArrayList 中的元素,但是需要注意,访问时返回的类型是 object,因此如果你知道元素的确切类型,可能需要进行类型转换:

csharp

复制

int firstItem = (int)myArrayList[0];

string secondItem = (string)myArrayList[1];

double thirdItem = (double)myArrayList[2];

添加和删除元素

除了 Add 方法,ArrayList 还提供了 AddRange 方法来一次性添加多个元素(这些元素应该来自实现了 ICollection 接口的集合),以及 Remove 和 RemoveAt 方法来删除元素。

泛型集合 vs ArrayList

尽管 ArrayList 提供了一种灵活的方式来存储对象集合,但在现代 C# 编程中,更推荐使用泛型集合(如 List),因为它们提供了类型安全,避免了类型转换的需要,并且通常提供了更好的性能。

例如,使用 List 代替 ArrayList 存储整数:

csharp

复制

using System;

using System.Collections.Generic;

class Program

{

static void Main()

{

List myList = new List();

复制代码
    myList.Add(1);
    myList.Add(2);
    myList.Add(3);

    // 不需要类型转换
    foreach(int item in myList)
    {
        Console.WriteLine(item);
    }
}

}

在这个例子中,List 明确指定了其存储的元素类型为 int,因此不需要进行类型转换,代码更简洁、更安全。

相关推荐
游乐码10 小时前
c#变长关键字和参数默认值
学习·c#
全栈小511 小时前
【C#】合理使用DeepSeek相关AI应用为我们提供强有力的开发工具,在.net core 6.0框架下使用JsonNode动态解析json字符串,如何正确使用单问号和双问号做好空值处理
人工智能·c#·json·.netcore·deepseek
wearegogog12311 小时前
基于C#的TCP/IP通信客户端与服务器
服务器·tcp/ip·c#
A_nanda17 小时前
C#调用Quartz.NET的完整实现。
c#·.net·quartz
2501_9307077817 小时前
使用C#代码在 PowerPoint 演示文稿中插入表格
开发语言·c#·powerpoint
少控科技18 小时前
C#基础训练营 - 01 - 数据类型
开发语言·c#
1314lay_100718 小时前
Vue3 + Element Plus项目和C# .Net 7.0 Core后端API项目发布部署到服务器
服务器·前端·javascript·vue.js·elementui·c#·.net
郝亚军18 小时前
c#如何编译、通过icd文件生成static_model.c和static_model.h
开发语言·c#
Traced back19 小时前
保姆级C#进阶教程:从入门到企业级开发,小白也能秒懂!
开发语言·c#
柒儿吖20 小时前
CharLS 无损 JPEG-LS 库在 OpenHarmony 的 lycium 适配与 ctest 验证
c++·华为·c#·harmonyos