`

C#的动态数组

    博客分类:
  • C#
阅读更多

在使用数组的过程中,有时候希望数组的长度和元素个数能随程序的运行不断改变,但改变一次就要重新开辟一个新的数组对象,这样将占用内存空间。为了解决这个问题,Microsoft.NET Framework 体统了一个ArrayList类,专门用于处理可按动态增减成员的数组。

ArrayList类被设计成一个动态数组,其容量会随着需要而适当的扩充。在ArrayList集合类中经常使用的方法如下。

Add()方法:向数组中添加一个元素

Remove()方法:删除数组中的某一元素

RemoveAt(int i)方法:删除数组中索引值为i的元素

Reverse()方法:反转数组的元素

Sort()方法:以从小到大的顺序排列数组的元素

Clone()方法:复制一个数组

 

ArrayList与System.Array的区别有以下几点:

①Array可以定义多维数组,ArrayList只能定义一维数组。

②Array可以定义自己的下限,ArrayList的下限始终是0

③Array的元素通常是特定类型的,Array的元素都是object类型的,所以需要进行装箱和拆箱操作,内存分配的代价高

④Array的元素数目是固定的,ArrayList的元素数目可以自动扩展

⑤ArrayList具有添加、删除、插入、移动、复制等方法

 

下面的是个小例子

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;

namespace ArrayListTest
{
    class Program
    {
        static void Main(string[] args)
        {
            ArrayList al = new ArrayList();
            //单个添加
            al.Add(100);
            //集体添加方发一
            foreach (int number in new int[6]{6, 3, 4, 1, 0 ,9})
            {
                al.Add(number);
            }
            //集体添加方法二
            int[] number2 = new int[2] {15, 21};
            al.AddRange(number2);
            //移除值为3的数
            al.Remove(3);
            //移除第3个数
            al.RemoveAt(3);

            ArrayList al2 = new ArrayList(al.GetRange(1, 3));
            Console.WriteLine("遍历方法一");
            foreach (int i in al)
            {
                //遍历方法一
                Console.WriteLine(i);
            }
            Console.WriteLine("遍历方法二");
            for (int i = 0; i <al2.Count; i++)
            {
                //一定要强制转换
                int number = (int)al2[i];
                Console.WriteLine(number);
            }
            Console.ReadLine();
        }
    }
}

 

运行结果如下:



 

由于移除了位置在3的数和数为3的数字,所以就没有了1和3,结果如上

  • 大小: 4.7 KB
分享到:
评论

相关推荐

    C# 动态数组类文件

    自己写的C#动态数组类库,类似于Arraylist类,比较简洁,主要功能都有,适合学习交流,完成作业。

    C#中动态声明与使用对象数组实例

    在C#编程语言中,动态声明与使用对象数组是一种常见的操作,特别是在处理不确定数量的数据时。本实例将探讨如何在C#中实现这一功能,并关注数组的声明、使用、数据保护以及内存管理。 首先,我们要了解C#中的数组。...

    C#的动态数组介绍可用

    ### C#中的动态数组——ArrayList 在C#中,`ArrayList` 类提供了一种非常灵活的方式来存储和操作数据集合。与传统的固定大小数组不同,`ArrayList` 是一个动态数组,这意味着它可以在运行时动态地调整其大小。这...

    C#动态数组动态分配长度的方法[归类].pdf

    在C#编程语言中,动态数组是一种非常实用的数据结构,它允许程序员在程序运行时根据需要改变数组的大小。在C#中,实现动态数组主要有三种方法,这些方法都适用于处理那些在编译时无法确定确切长度的数据集合。 1. *...

    C#验证数组元素是否重复

    ### C#验证数组元素是否重复的知识点 #### 1. 数组的定义与初始化 在C#中,数组可以通过以下方式定义和初始化: ```csharp string[] numbers = { "1", "2", "3", "4" }; ``` 或通过字符串分割来创建: ```csharp ...

    c# 中数组的算法 c# 中数组的算法,c# 中数组的算法

    5. 动态数组:C#的`List&lt;T&gt;`类提供了动态扩展的数组功能,可以方便地添加、删除元素,无需预知数组大小。 6. 数组复制与合并:`Array.Copy()`方法用于复制数组,`Array.Join()`则用于合并两个数组。 7. 排列组合:...

    C# 读取数组Json文件

    本篇文章将深入探讨如何在C#中读取包含数组的JSON文件。 首先,我们需要了解JSON的基本结构。一个JSON文件通常包含键值对,可以表示对象或者数组。数组在JSON中用方括号`[]`表示,对象用大括号`{}`表示。例如,一个...

    c#中结构数组的定义

    ### C#中结构数组的深度解析 #### 一、数组概览 在C#中,数组作为基础数据结构,提供了一种存储同类型元素的连续内存区域的方式。数组的索引从0开始,这一特性与许多其他编程语言相似。值得注意的是,C#中的数组...

    C#byte数组结构体互相转换示例.zip

    在C#编程中,结构体(Struct)与字节数组(Byte Array)之间的转换是一项常见的操作,特别是在处理网络通信、序列化或低级数据处理时。本示例提供了便捷的方法来实现这种转换,帮助开发者解决相关的技术难题。 首先...

    C#实现控件数组的方法

    1. 定义动态的控件数组:在C#中,可以定义动态的控件数组,然后将已设计好的控件附给动态的数组。例如: ```csharp private void button1_Click(object sender, System.EventArgs e) { TextBox[] myTextBox = new ...

    C#字节数组转16进制字符串

    C#字节数组转16进制字符串 C#字节数组转16进制字符串 QQ:292258449

    C# Byte数组转Int32 Short Float(浮点数)

    在C#编程中,处理字节数组与各种数值类型之间的转换是非常常见的操作。这通常涉及到网络通信、数据存储或序列化等情况。标题和描述提到的“C# Byte数组转Int32 Short Float(浮点数)”是指将字节数组中的数据转换为...

    C# 维数组转换为DataTable 的三个方法

    ### C# 中维数组转换为 DataTable 的三种方法 在 C# 开发中,经常会遇到需要将数据从一种格式转换到另一种格式的需求,特别是在处理 Excel 数据时。本文将介绍如何使用 C# 将多维数组转换成 `DataTable`,这对于...

    动态二维数组 c#编程

    在C#编程中,动态二维数组是一种非常重要的数据结构,特别是在处理不定数量的数据或需要灵活扩展数据表的情况下。本文将深入探讨动态二维数组的概念、创建方法、操作技巧以及其在实际编程中的应用。 动态二维数组,...

    c#语言数组用法详解

    C#数组的特点之一是它的索引从零开始,这意味着第一个元素的索引是0,最后一个元素的索引是数组长度减1。例如,一个包含10个元素的数组,其索引范围是0到9。在C#中,数组的声明与许多其他语言有所不同,数组类型需要...

    C#窗体数组运算

    在C#编程中,"C#窗体数组运算"是一个涉及图形用户界面(GUI)开发和数值计算的领域。窗体应用程序通常使用Windows Forms库来创建,而数组运算则涉及到多维数组处理和数学计算。在这个场景下,我们讨论的是如何在C#...

    C#中各种数组的性能比较

    根据不同的需求,C#提供了多种类型的数组,包括一维数组、交错数组(也称作锯齿数组或Jagged Arrays)以及多维数组。本文将深入探讨这三种数组在C#中的性能差异,帮助开发者在实际应用中做出更加合理的选择。 ### ...

    C# 字节数组的模式匹配算法

    本篇文章将深入探讨如何使用C#来实现字节数组的模式匹配算法。 首先,我们要理解什么是模式匹配。模式匹配是指在一段文本(在本例中是字节数组)中查找一个特定的子序列(模式)。这种子序列可能是另一个字节数组或...

    C# 数组与序列化

    在C#编程语言中,数组和序列化是两个非常重要的概念。数组是数据结构的基础,序列化则是数据传输和持久化的关键技术。接下来,我们将深入探讨这两个主题。 **数组** 数组是C#中用于存储固定数量同类型元素的集合。...

    dll向C#传递数组.rar

    在.NET框架中,C#与非托管代码如C++之间的交互是通过DLL(动态链接库)来实现的。本示例“dll向C#传递数组.rar”提供了如何在C#中调用C++编写的DLL,并传递数组作为参数的具体方法。这种跨语言互操作性依赖于CLI...

Global site tag (gtag.js) - Google Analytics