我的编程空间,编程开发者的网络收藏夹
学习永远不晚

C#常用数据结构之数组Array

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

C#常用数据结构之数组Array

一、概述

数组为引用类型,其中的元素固定。 定义后不能增加删除元素。(如果事先不知道应包含多少元素,则应使用List集合)。数组可以包含同一类型的多个元素。

数组实现了IEumerable,ICollection,IList接口的部分功能。

二、声明数组变量及使用

1、一维数组:[]

声明及初始化:

int[] arr1 = new int[5];//声明带5个元素的数组
//或者
int[] arr2 = new int[] { 1, 3, 5, 7, 9 };
//或者
int[] arr3 = { 1, 3, 5, 7, 9 };

数组元素为引用类型:

Person[] arrPerson = new Person[2];
arrPerson[0] = new Person {"a","af"};
Person[] arrPerson2 = {new Person {"a","af"},new Person {"c","cf"}}

访问数组元素,为数组元素赋值:

int a = arr1[0];//整数索引。
arr1[3] = 7;

遍历

for (int i = 0; i < arr1.Length; i++)
{
    Console.WriteLine(i + "," + arr1[i]);
}
//或者
foreach (int item in arr2)
{
    Console.WriteLine(item);
}

2、二维数组:[,]

声明及初始化:

int[,] arr1 = new int[2, 3];//两行三列
int[,] arr2 = { { 1, 2, 3 }, { 4, 5, 6 } };

访问数组元素,为数组元素赋值:

arr1[0, 2] = 25;//为数组的第一行第三列元素赋值为25

遍历:

for (int i = 0; i < arr1.GetLength(0); i++)
{
    for (int j = 0; j < arr1.GetLength(1); j++)
    {
        Console.WriteLine(i + "," + j + "," + arr1[i, j]);
    }
}

3、锯齿数组:[][]

每一行的元素个数可以不一样,数组的数组。

声明及初始化:

int[][] arr1 = new int[][]
{
   new int[] { 1, 2 },new int[] {3,4,5}
};

访问数组元素,为数组元素赋值:

arr1[0] = new int[] { 1, 2 };
arr1[1] = new int[] { 3, 4, 5 };

遍历:

for (int i = 0; i < arr1.Length; i++)
{
    for (int j = 0; j < arr1[i].Length; j++)
    {
        Console.WriteLine(i + "," + j + "," + arr1[i][j]);
    }
}

三、Array类

Arrary类为抽象类,用括号[]声明是C#中使用Array类的简写形式。

Array array = Array.CreateInstance(typeof(int), 5);//相当于 int[] array=new int[5];
for (int i = 0; i < 5; i++)
{
    array.SetValue(33, i);
}
for (int i = 0; i < 5; i++)
{
    Console.WriteLine(array.GetValue(i));
}

Arrary类实现了以下接口:

  • IEumerable:使用foreach语句遍历,必须实现此接口。
  • ICollection:IEumerable
  • IList:ICollection
  • ICloneable

四、Array类的成员

  • Length : 获取 Array 的所有维度中的元素总数。
  • Rank: 获取 Array 的秩(维数)。 例如,一维数组返回 1,二维数组返回 2,依次类推。
  • GetLength(Int32): 获取一个 32 位整数,该整数表示 Array 的指定维中的元素数。
  • GetLowerBound(Int32) : 获取数组中指定维度第一个元素的索引。
  • GetUpperBound(Int32): 获取数组中指定维度最后一个元素的索引。

五、Array类的静态方法

1、Array.Sort 排序

1、使用 Array 中每个元素的 IComparable 实现,对一维 Array 中的部分元素进行排序。

public static void Sort (Array array, int index, int length);

实例:

void Main()
{
    Person[] ArrPerson = { new Person("ab", "bb"), new Person("ca", "ab") };
    Array.Sort(ArrPerson);
    foreach (Person p in ArrPerson)
    {
        Console.WriteLine(p);
    }
}

public class Person : IComparable
{
    public string FirstName;
    public string LastName;
    public Person(string firstName, string lastName)
    {
        this.FirstName = firstName;
        this.LastName = lastName;
    }
    public int CompareTo(object obj)
    {
        Person other = obj as Person;
        int result = this.LastName.CompareTo(other.LastName);//如果实例应排在参数对象前面,返回负数;如果实例应排在参数对象后面,返回整数;如果实例与参数对象相等,返回0;
        if (result == 0)
        { result = this.FirstName.CompareTo(other.FirstName); }
        return result;
    }
}

2、使用指定的 IComparer,对一维 Array 中的部分元素进行排序。

comparer:比较元素时要使用的 IComparer 实现。或 若为 null,则使用每个元素的 IComparable 实现。

public static void Sort (Array array, int index, int length, System.Collections.IComparer comparer);

实例:

void Main()
{
    Person[] ArrPerson = { new Person("ab", "bb"), new Person("ca", "ab") };
    Array.Sort(ArrPerson, new PersonComparer());
    foreach (Person p in ArrPerson)
    {
        Console.WriteLine(p);
    }
}
public class Person
{
    public string FirstName;
    public string LastName;
    public Person(string firstName, string lastName)
    {
        this.FirstName = firstName;
        this.LastName = lastName;
    }
}

public class PersonComparer : IComparer
{
    public int Compare(object x, object y)
    {
        Person p1 = x as Person;
        Person other = y as Person;
        int result = p1.LastName.CompareTo(other.LastName);
        if (result == 0)
        { result = p1.FirstName.CompareTo(other.FirstName); }
        return result;
    }
}

2、Array.Reverse(Array, Int32, Int32) 反转

反转一维 Array 中某部分元素的元素顺序。

3、Array.IndexOf(Array, Object, Int32, Int32) 查找位置

在一个一维数组的一系列元素中搜索指定对象,然后返回其首个匹配项的索引。 该元素系列的范围从指定数量的元素的指定索引开始。

4、Array.LastIndexOf(Array, Object, Int32, Int32)

搜索指定的对象并返回一维 Array 中包含指定数目元素且在指定索引处结尾的元素范围内的最后一个匹配项的索引。

5、Array.Clear(Array, Int32, Int32) 清除元素的值

将数组中的某个范围的元素设置为每个元素类型的默认值。元素个数不变

6、Array.Copy(Array, Int32, Array, Int32, Int32) 复制到一个已有数组

复制 Array 中的一系列元素(从指定的源索引开始),并将它们粘贴到另一 Array 中(从指定的目标索引开始)。 长度和索引指定为 32 位整数。

7、Array.Clone() 创建一个新数组

创建 Array 的浅表副本。

到此这篇关于C#常用数据结构之数组Array的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持编程网。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

C#常用数据结构之数组Array

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

C++之array数组如何使用

本篇内容介绍了“C++之array数组如何使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!定义和初始化数组数组是一个复合类型,可以通过类似
2023-07-05

Redis之常用数据结构哈希表

目录1.哈希冲js突2.链式哈希3.rehash4.渐进式 rehash5.rehash 触发条件哈希表是一种保存键值对(key-value)的数据结构哈希表优点在于,它能以 O(1) 的复杂度快速查询数据。怎么做到的呢?将 key
2023-04-11

C++ 数据结构指南:理清复杂数据组织之道

答案: c++++ 数据结构是组织和管理数据的构建块,优化检索和处理。常见结构:数组:有序集合,通过索引访问向量:动态数组,快速插入和删除链表:灵活插入和删除堆栈:lifo 原则队列:fifo 原则树:分层结构哈希表:快速键值查找应用: 数
C++ 数据结构指南:理清复杂数据组织之道
2024-05-23

C++教程之array数组使用示例详解

这篇文章主要为大家介绍了C++教程之array数组使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2023-03-08

Java数据结构之稀疏数组的实现与应用

这篇文章主要为大家详细介绍了Java数据结构中稀疏数组的实现与应用,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的可以了解一下
2022-11-13

数据库如何使用C++数据结构

本篇文章为大家展示了数据库如何使用C++数据结构,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。在编写代码时,堆栈是最常用的C++数据结构,它的概念简单,编写也比较简单,现在举这么个例子,桌子上有堆成
2023-06-17

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录