一、Array的作用

  连续定义多个相同类型的变量,比如我定义1000个学生的学生年龄,int[] age = new int[1000];不需要慢慢的一个一个变量的定义,数组是不是很方便。

需要注意的:1)Array是引用类型。引用类型是传递栈中的地址。2)数组都是由连续的内存位置组成的。

二、Array定义与赋值

1)先定义再赋值比如:

             //定义100个学生的成绩
//第一种定义并初始化方式
int[] studentSorce = new int[];
studentSorce[] = ;
studentSorce[] = ;
//第二种定义并初始化方式
int[] studentSorce02 = new int[]{,,,,};
//第三种定义并初始化方式
int[] studentSorce03 = new int[] { , , , , };
//第四种定义并初始化方式
int[] studentSorce04 = { , , , , };
//二维定义方式
int[,] arr = new int[, ];
//二维定义并赋值,3行4列
int[,] arr02 = new int[, ] { { ,,, }, { , , , },{,,,} };

2)二维数组遍历

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace ArrayTest
{ class Program
{
public static int[,] array2D; //定义二维数组,没赋值数组长度 /// <summary>
/// 随机生成二维数组
/// </summary>
/// <param name="rows">一维(行)</param>
/// <param name="columns">二维(列)</param>
public static void RaArray2D(int rows, int columns)
{
Random ra = new Random();
array2D = new int[rows, columns];
for (int i = ; i < array2D.GetLength(); i++)
{
for (int j = ; j < array2D.GetLength(); j++)
{
array2D[i, j] = ra.Next(, ); //范围10-100的随机数
}
}
}
/// <summary>
/// 遍历二维数组
/// </summary>
/// <param name="arr2D">二维数组</param>
public static void EachArray2D(int[,] arr2D)
{
for (int i = ; i < arr2D.GetLength(); i++)
{
for (int j = ; j < arr2D.GetLength(); j++)
{
Console.Write(arr2D[i, j].ToString().PadRight(, '\u0000'));
}
Console.WriteLine();
}
} static void Main(string[] args)
{
RaArray2D(, );
EachArray2D(array2D); Console.WriteLine(array2D.Length);//显示二维数组总长度.
Console.WriteLine(array2D.Rank); //数组维度 Console.ReadKey(); } }
}

3)数组初始化的值,代码 int[] studentSorce = new int[]; 我们进行两步创建。

            int[] x;            //定义int[]的数组,没有赋值.
x = new int[]; //赋值后x[0]...x[4]初值0

这样我们就可以在类中定义数组,然后在方法中赋值。如下

public static int[] newArr;   //在类中定义,然后在方法中赋值。估计可行。

三、Array常用方法

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace ArrayTest
{ class Program
{
public static int[] array1D; //声明array1D变量,该变量的类型为int[]
/// <summary>
/// 随机生成一维数组
/// </summary>
/// <param name="number">表示数组的长度</param>
public static void RaArray(int number)
{
array1D = new int[number]; //创建了一个数组,将数组的地址赋值给array1D
Random ra = new Random();
for (int i = ; i < array1D.Length; i++)
{
array1D[i] = ra.Next(, ); //随机范围30-100
}
}
/// <summary>
/// 遍历数组方法
/// </summary>
public static void EachArray()
{
for (int i = ; i < array1D.Length; i++)
{
Console.Write(array1D[i].ToString().PadRight(, '\u0000'));
}
} static void Main(string[] args)
{
RaArray(); //生成随机数组方法
EachArray(); //遍历数组的方法
//下面介绍一些数组的方法
Console.WriteLine(); //换行
Array.Sort(array1D); //排序由小到大
EachArray();
Console.WriteLine(); //换行
Array.Reverse(array1D); //数组元素反转
EachArray();
Console.WriteLine(); //换行
int max = array1D.Max();
int min = array1D.Min();
int sum = array1D.Sum();
double avg = array1D.Average();
Console.WriteLine("array1D数组的最大值:{0},最小值:{1},和:{2},平均值:{3}", max, min, sum, avg);
Console.WriteLine(); //换行
Console.WriteLine("输入要查询的数字");
int chaXun = int.Parse(Console.ReadLine());
bool isContains = array1D.Contains(chaXun); //查询数组是否包含指定数,返回bool
Console.WriteLine(isContains);
Console.WriteLine();
int[] newArray1d = new int[array1D.Length];
array1D.CopyTo(newArray1d, ); //将array1D的所有元素复制给newArray1D
for (int i = ; i < newArray1d.Length; i++)
{
Console.Write(newArray1d[i].ToString().PadRight(, '\u0000'));
}
Console.WriteLine("输入数字,检索第一次出现的索引值");
int number = int.Parse(Console.ReadLine());
int firstIndex = Array.IndexOf(array1D, number); //搜索array1D中第一次出现指定值的索引值
int laseIndex = Array.LastIndexOf(array1D, number); //最后一次出现的索引值. Console.WriteLine("搜索第一次出现{0}位置索引号为:{1},最后一次出现的索引号为{2}", number, firstIndex, laseIndex); Console.WriteLine(Array.Find(array1D, item => item > )); //数组中第一个大于5的数字
Console.WriteLine(Array.FindLast(array1D, items => items < )); //检索数组最后一个大于90的值并输出
foreach (int item in Array.FindAll(array1D,item=>item>)) //遍历所有大于50的值
{
Console.Write("大于50的有{0}", item);
}
Console.WriteLine(); //换行
//第一个大于50的索引值,和最后一个大于50的索引值
Console.WriteLine("第一个大于50的索引是:{0},最后大于50的是{1}", Array.FindIndex(array1D, item => item > ), Array.FindLastIndex(array1D, item => item > ));
Console.ReadKey();
} }
}

四、交错数组

交错数组:每行元素个数不想等的二维数组。有时也称“数组的数组”定义、初始化、遍历如下代码:

             //交错数组,定义与初始化
int[][] interleavedArray = new int[][];
interleavedArray[] = new int[] { , , , };//第一行4个元素
interleavedArray[] = new int[] { , }; //第二行2个元素
interleavedArray[] = new int[] { , , };
interleavedArray[] = new int[] { , , , , , };
//遍历交错数组
//先测试下交错数组1维长度(行)
Console.WriteLine(interleavedArray.GetLength()); //第一种方法,获取第一维长度
Console.WriteLine(interleavedArray.Length); //推荐使用,获取第一维长度.标准用法
Console.WriteLine(interleavedArray[].Length); //(第一行有多少列)
Console.WriteLine(interleavedArray[].Length); //第二行有多少列
//下面遍历的问题就容易了
Console.ForegroundColor = ConsoleColor.Cyan; for (int i = ; i < interleavedArray.Length; i++) //行,一维
{
for (int j = ; j < interleavedArray[i].Length; j++) //列,二维
{
Console.Write(interleavedArray[i][j].ToString().PadRight(, ' '));
}
Console.WriteLine();
}

交错数组应用代码如下:

C# 基础Array的更多相关文章

  1. PHP SPL标准库之数据结构栈(SplStack)介绍(基础array已经可以解决很多问题了,现在开始解决问题)

    PHP SPL标准库之数据结构栈(SplStack)介绍(基础array已经可以解决很多问题了,现在开始解决问题) 一.总结 SplStack就是继承双链表(SplDoublyLinkedList)实 ...

  2. [基础] Array.prototype.indexOf()查询方式

    背景 最近在看Redux源码,createStore用于注册一个全局store,其内部维护一个Listeren数组,存放state变化时所有的响应函数. 其中store.subscribe(liste ...

  3. golang基础--Array数组

    基本特性 格式: var Name [n]<type>,n>0 如: var a [10]int 表示,定义一个长度为10,元素类型为int性的数组 数组长度: 长度(len)也是数 ...

  4. JavaScript基础系列目录(2014.06.01~2014.06.08)

    下列文章,转载请亲注明链接出处,谢谢! 链接地址: http://www.cnblogs.com/ttcc/tag/JavaScript%20%E5%9F%BA%E7%A1%80%E7%9F%A5%E ...

  5. JQuery之操作array

    1:split 函数将字符串按某个字符分割,将分割后的结果存入字符串数组中 function SplitUsersInformation(users) { var usersArray = users ...

  6. react-redux(1)

    基础 Array.prototype.reduce //类似的核心思想 const initState = ''; const actions = ['a', 'b', 'c']; const new ...

  7. forEach、map、 for-in 、 for 、some 对比 break

    map.forEach 乱用 ,被嫌弃,现整理区别 补补基础 Array 迭代方法 1. every(): 对数组中的每一项运行给定函数,如果该函数对每一项都返回true ,则返回true. 2. f ...

  8. 如何加速golang写业务的开发速度

    如何加速golang写业务的开发速度 不要忌讳panic golang写业务代码经常会被吐槽,写业务太慢了,其中最大的吐槽点就是,处理各种error太麻烦了.一个项目中,会有30%或者更多的是在处理e ...

  9. [转载]Redux原理(一):Store实现分析

    写在前面 写React也有段时间了,一直也是用Redux管理数据流,最近正好有时间分析下源码,一方面希望对Redux有一些理论上的认识:另一方面也学习下框架编程的思维方式. Redux如何管理stat ...

随机推荐

  1. 二十四、SAP中打开帮助文件

    一.在代码输入界面,选中一个关键词,按一下F1,或者问号 二.显示出的帮助内容

  2. 019-PHP创建目录函数

    <?php if (mkdir("myDir1", 0777)) //创建目录的函数 { print("目录创建成功"); //目录建立成功 } else ...

  3. JavaWeb学习记录

    服务器端跳转(请求重定向): 1.jsp内跳转 : <jsp:forward page="page_scope_03.jsp"/> 客户端跳转(请求转发): 1.通过超 ...

  4. 51nod 1475:建设国家 优先队列的好题

    1475 建设国家 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题  收藏  关注 小C现在想建设一个国家.这个国家中有一个首都,然后有若干个中间站,还有若干个城市 ...

  5. EUI库 - 概述

        新特性 36k   访问EUI组件宽高时,也会跟原生显示对象的表现一致,立即能得到包含子项的宽高值   统一的显示列表  普通对象和eui对象都可用addChild来添加   一个逻辑组件只管 ...

  6. python保留小数位

    前言 保留小数位是我们经常会碰到的问题,尤其是刷题过程中.那么在python中保留小数位的方法也非常多,但是笔者的原则就是什么简单用什么,因此这里介绍几种比较简单实用的保留小数位的方法: 方法一:fo ...

  7. 干货分享:Essay写作收集论据的三个方法

    在很多时候,中国留学生写出的Essay在西方学术界看来是存在plagiarism的情况.并不是说咱们写的所有东西都是抄袭,而是思维逻辑和利用证据的方式与西方权威的academic writing不同. ...

  8. su鉴定故障 普通用户无法切换回root用户处理-centos7网卡速率设置

    1.1 检查/etc目录下passwd的权限[root@dev /]# ll/etc/passwd-rw-r--r--. 1 root root 1975 5月  27 06:04/etc/passw ...

  9. [题解] CF438E The Child and Binary Tree

    CF438E The Child and Binary Tree Description 给一个大小为\(n\)的序列\(C\),保证\(C\)中每个元素各不相同,现在你要统计点权全在\(C\)中,且 ...

  10. Android自定义View——实现字母导航栏

    1.自定义View实现字母导航栏 2.ListView实现联系人列表 3.字母导航栏滑动事件处理 4.字母导航栏与中间字母的联动 5.字母导航栏与ListView的联动 1.先看主布局,方便后面代码的 ...