实现:添加元素,删除元素,查找元素,反转数组,根据索引值插入元素,根据索引值删除元素,将文本文档中每行数据导入动态数组中,将动态数组中的每个元素导出到文本文档中。清空动态数组等。

using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace 集合
{
    public partial class Form1 : Form
    {
        ArrayList AL = new ArrayList();//声明一个动态数组
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)//添加元素 按钮单击事件
        {
            AL.Add(txtys.Text); //将  元素文本框的内容添加到动态数组中。
            txtdh.Clear();//清空显示多行文本框。
            int max = AL.Count;//获取动态数组中的元素数。
            for (int i = 0;i < max;i++)//循环
            {
                txtdh.AppendText("第"+i+"索引的元素为:"+AL[i].ToString() + "\r\n");//在多行文本框中显示动态数组中的元素。
            }
        }
        private void button2_Click(object sender, EventArgs e)//删除元素 按钮单击事件
        {
            AL.Remove(txtys.Text);//删除 动态数组中的 元素文本框内容。
            txtdh.Clear();//清空显示多行文本框。
            int max = AL.Count;//获取动态数组中的元素数。
            for (int i = 0; i < max; i++)//循环
            {
                txtdh.AppendText("第" + i + "索引的元素为:" + AL[i].ToString() + "\r\n");//在多行文本框中显示动态数组中的元素。
            }
        }

        private void button3_Click(object sender, EventArgs e)// 根据索引值 插入数据 单击事件
        {
            int a;//声明整型变量。
            if (int.TryParse(txtsy.Text,out a) == false)// 判断 索引文本框的值是否可以转变成整数。
            {
                MessageBox.Show("请填写正确的索引值(正整数).");//提示
                return;//退出
            }
            if (Convert.ToInt32(txtsy.Text) >= AL.Count)//判断输入的值是否大于或等于 动态数组最大元素数。
            {
                MessageBox.Show("请填写正确的索引值.");//提示
                return;//退出
            }
            if (Convert.ToInt32(txtsy.Text) < 0)//判断输入的值是否小于0
            {
                MessageBox.Show("请填写正确的索引值(正整数).");//提示
                return;//退出
            }
            AL.Insert(Convert.ToInt32(txtsy.Text),txtys.Text);//将  元素文本框内的元素插入到指定的索引值。
            txtdh.Clear();//清空显示多行文本框。
            int max = AL.Count;//获取动态数组中的元素数。
            for (int i = 0; i < max; i++)//循环
            {
                txtdh.AppendText("第" + i + "索引的元素为:" + AL[i].ToString() + "\r\n");//在多行文本框中显示动态数组中的元素。
            }
        }
        private void button4_Click(object sender, EventArgs e)//导入 按钮 单击事件
        {
            using (OpenFileDialog ofd = new OpenFileDialog())//声明一个 打开文本的控件。
            {
                ofd.Filter = "文本文档(*.txt)|*.txt";//文本类型
                ofd.DefaultExt = "txt";//设置默认的扩展名
                ofd.Multiselect = false;//是否可以多选文本。
                ofd.Title = "请选择要导入的文本文档...";//标题
                if (ofd.ShowDialog() != DialogResult.OK)//判断是否打开文本文件
                {
                    MessageBox.Show("请选择要导入的文本文档。");//提示
                    return;//退出
                }
                using (FileStream fs = File.OpenRead(ofd.FileName) )//打开读取的文件
                {
                    using (StreamReader sr = new StreamReader(fs,Encoding.Default))//读取的文件信息
                    {
                        string s = null;//声明字符串变量
                        while ((s = sr.ReadLine()) != null)//读取文件信息行赋值给s,并判断读取的文件信息行是否为空。
                        {
                                AL.Add(s);//添加到动态数组中。
                        }
                        txtdh.Clear();//清空显示多行文本框。
                        int max = AL.Count;//获取动态数组中的元素数。
                        for (int i = 0; i < max; i++)//循环
                        {
                            txtdh.AppendText("第" + i + "索引的元素为:" + AL[i].ToString() + "\r\n");//在多行文本框中显示动态数组中的元素。
                        }
                        MessageBox.Show("导入成功.");//提示
                    }
                }
            }                
        }
        private void button5_Click(object sender, EventArgs e)// 保存 按钮单击事件
        {
            using (SaveFileDialog sfd =new SaveFileDialog()) //声明一个 保存 控件实例
            {
                sfd.Title = "另存为...";//标题
                sfd.Filter = "文本文档(*.txt)|*.txt";//保存的类型
                sfd.DefaultExt = "txt";//默认扩展名
                sfd.AddExtension = true;//自动添加扩展名
                if (sfd.ShowDialog() != DialogResult.OK)//判断是否选择保存信息
                {
                    MessageBox.Show("请输入要保存的文本文档.");//提示
                    return;//退出
                }
                using (StreamWriter sw =new StreamWriter(sfd.FileName))//写入
                {
                    foreach (var temp in AL)//循环遍历 AL动态数组每一个元素。
                    {
                        sw.WriteLine(temp);//将元素写入到文本中
                    }
                    MessageBox.Show("保存成功.");//提示
                }
            }
        }
        private void button6_Click(object sender, EventArgs e)//清空 按钮单击事件
        {
            AL.Clear();//清空动态数组
            txtdh.Clear();//清空多行文本框
            MessageBox.Show("清空成功.");//提示
        }
        private void button7_Click(object sender, EventArgs e)//退出 按钮单击事件
        {
            this.Close();//关闭窗口
        }

        private void button8_Click(object sender, EventArgs e)//查找元素 按钮单击事件
        {
            txtdh.Text = AL.Contains(txtys.Text) ? txtys.Text+":存在动态数组中.它的第一个匹配项的索引值为:"+ AL.IndexOf(txtys.Text) : txtys.Text + ":不存在动态数组中.";
            //显示查找结果。
        }
        private void button9_Click(object sender, EventArgs e)//根据索引值删除元素 按钮单击事件
        {
            int q;//声明一个整型变量
            if (int.TryParse(txtsy.Text,out q) == false)//判断输入的索引值是否可以转变成整型
            {
                MessageBox.Show("请填写正确的索引值(正整数).");//提示
                return;//退出
            }
            if (Convert.ToInt32(txtsy.Text) >= AL.Count)//判断输入的索引值是否大于或等于 动态数组的元素数
            {
                MessageBox.Show("请填写正确的索引值.");//提示
                return;//退出
            }
            if (Convert.ToInt32(txtsy.Text) < 0)//判断输入的索引值是否小于0
            {
                MessageBox.Show("请填写正确的索引值(正整数).");//提示
                return;//退出
            }
            AL.RemoveAt(Convert.ToInt32(txtsy.Text));//删除指定索引值的元素
            txtdh.Clear();//清空多行文本框
            int max = AL.Count;//获取动态数组中的元素数。
            for (int i = 0; i < max; i++)//循环
            {
                txtdh.AppendText("第" + i + "索引的元素为:" + AL[i].ToString() + "\r\n");//在多行文本框中显示动态数组中的元素。
            }
        }
        private void button10_Click(object sender, EventArgs e)//反转数组 按钮单击事件
        {
            AL.Reverse();//将AL动态数组 元素反转
            txtdh.Clear();//清空多行文本框
            int max = AL.Count;//获取动态数组中的元素数。
            for (int i = 0; i < max; i++)//循环
            {
                txtdh.AppendText("第" + i + "索引的元素为:" + AL[i].ToString() + "\r\n");//在多行文本框中显示动态数组中的元素。
            }
        }
        private void Form1_Load(object sender, EventArgs e)
        {
        }
    }
}

输出结果:

image.pngimage.png


程序和源码:

动态数组-小程序.rar