C# 基础Array
一、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的更多相关文章
- PHP SPL标准库之数据结构栈(SplStack)介绍(基础array已经可以解决很多问题了,现在开始解决问题)
PHP SPL标准库之数据结构栈(SplStack)介绍(基础array已经可以解决很多问题了,现在开始解决问题) 一.总结 SplStack就是继承双链表(SplDoublyLinkedList)实 ...
- [基础] Array.prototype.indexOf()查询方式
背景 最近在看Redux源码,createStore用于注册一个全局store,其内部维护一个Listeren数组,存放state变化时所有的响应函数. 其中store.subscribe(liste ...
- golang基础--Array数组
基本特性 格式: var Name [n]<type>,n>0 如: var a [10]int 表示,定义一个长度为10,元素类型为int性的数组 数组长度: 长度(len)也是数 ...
- 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 ...
- JQuery之操作array
1:split 函数将字符串按某个字符分割,将分割后的结果存入字符串数组中 function SplitUsersInformation(users) { var usersArray = users ...
- react-redux(1)
基础 Array.prototype.reduce //类似的核心思想 const initState = ''; const actions = ['a', 'b', 'c']; const new ...
- forEach、map、 for-in 、 for 、some 对比 break
map.forEach 乱用 ,被嫌弃,现整理区别 补补基础 Array 迭代方法 1. every(): 对数组中的每一项运行给定函数,如果该函数对每一项都返回true ,则返回true. 2. f ...
- 如何加速golang写业务的开发速度
如何加速golang写业务的开发速度 不要忌讳panic golang写业务代码经常会被吐槽,写业务太慢了,其中最大的吐槽点就是,处理各种error太麻烦了.一个项目中,会有30%或者更多的是在处理e ...
- [转载]Redux原理(一):Store实现分析
写在前面 写React也有段时间了,一直也是用Redux管理数据流,最近正好有时间分析下源码,一方面希望对Redux有一些理论上的认识:另一方面也学习下框架编程的思维方式. Redux如何管理stat ...
随机推荐
- 五十九、SAP中常用预定义系统变量
一.SAP中常用预定义系统变量 内容如下: 二.系统变量定义在结构SYST里,我们打开SE38 三.在代码编辑器输入SYST变量 四.双击SYST,来到这个系统结构,里面有很多系统变量 五.我们随便写 ...
- hdu 1257 最少拦截系统 求连续递减子序列个数 (理解二分)
最少拦截系统 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Subm ...
- EE将于5月30日在英国推出首个5G网络
英国移动运营商 EE 宣布计划于周三在英国推出 5G,该网络将于 5 月 30 日开通,第一批 5G 手机可从今天开始预订.EE 最初的 5G 网络部署将集中在六个城市(伦敦,加的夫,爱丁堡,贝尔法斯 ...
- HDU 5480:Conturbatio 前缀和
Conturbatio Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Tota ...
- zookeeper 安装及集群
一.zookeeper介绍 zookeeper是一个中间件,为分布式系统提供协调服务,可以为大数据服务,也可以为java服务. 分布式系统,很多计算机组成一个整体,作为一个整体一致对外并处理同一请求, ...
- 数据类型和C#关系对应
sqlserver与c#中数据类型的对应关系///private string changetocsharptype(string type){string reval=string.empty;sw ...
- window10 家庭版安装docker和php开发环境
前期工作 一.在宿主机创建文件夹 D:\wnmp\mysql57-conf D:\wnmp\mysql57-log D:\wnmp\nginx110-conf D:\wnmp\nginx110-l ...
- 二十四、CI框架之URL辅助函数
一.控制器代码如下: 二.view的显示代码中,关于路径,我们可以用另外一种方法来写, 如: "/CodeIgniter-3.1.10/index.php/welcome/add" ...
- Nginx系列p5:进程管理(信号)
通过上图我们可以看到:信号与命令行的关系,下面我们来简单总结一下上述命令的作用: CHLD: 当子进程终止的时候,会向父进程发送 CHLD 信号,这样,如果子进程由于某些模块出现了 Bug,导致子进程 ...
- python 符号小技巧
1 用于解释 对于不想放入程序中执行的句子 用来解释的 在Python中 单行注释用 # 多行注释用 """ 这个句子不会在Python中表达出来 " ...