一、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. 096-PHP循环使用next取数组元素

    <?php function return_item($arr,$num=0){ //定义函数 for($i=0;$i<$num;$i++){ //循环向前移动数组指针 next($arr ...

  2. python 网页爬虫 基础篇

    首先要连接自己的数据库 import pymysql import requests #需要导入模块 db = pymysql.connect('localhost', 'root', '****** ...

  3. python --- excel文件处理

    1.安装第三方库:openpyxl 2.操作示例 from openpyxl import load_workbook #.打开文件 file = load_workbook("test.x ...

  4. tensorflow-cnnn-mnist

    #coding=utf-8import tensorflow as tfimport numpy as npimport matplotlib .pyplot as pltfrom tensorflo ...

  5. Java进阶之路 - 1.走近Java

    Java进阶之路 - 1.走近Java 一.走近Java思维导图

  6. cf 730J. Bottles

    搞一个背包,233 要求用的瓶数最少,那么就业瓶数为第一关键,当瓶数相当后再以a[i] #include<bits/stdc++.h> #define N 100005 #define L ...

  7. ssm搭建,maven,javaConfig

    基于java配置SSM,eclipse 新建maven,web项目 .... 项目结构: jar包 pom.xml spring和DispatcherServlet上下文,相当于web.xml pub ...

  8. 二十、CI框架数据库操作之查看生产的sql语句

    一.代码如下: 二.我们访问一下: 三.我们对比一下数据库内容 不忘初心,如果您认为这篇文章有价值,认同作者的付出,可以微信二维码打赏任意金额给作者(微信号:382477247)哦,谢谢.

  9. 解决TeamViewer提示商业用途

    安装此插件 提取码:i8o3

  10. C#高级编程(第9版) 第11章 LINQ 笔记

    概述语言集成查询(Language Integrated Query, LINQ)在C#编程语言中集成了查询语法,可以用相同的语法访问不同的数据源.LINQ提供了不同数据源的抽象层,所以可以使用相同的 ...