数组
循环是一个很好的帮助我们偷懒的功能,当你需要执行几千次同一段代码时只需要写一次就够了。
但是,在循环中声明的变量不能拿出来用。如果想保存每次循环中产生的值就需要在循环外声明很多的变量。
如果想一次性声明多个变量,可以使用数组。
声明
声明一个数组的方式是,在一个类型后加中括号。
int[] a;
int [][][][][][]b;//任何值都是有类型的,也就是说数组也是一种类型。所以有数组的数组。
var关键字的自动判断类型是可以判断出数组的,不要在var后面加中括号
赋值
数组值有两种声明方式。
如果你能直接写完所有数量的元素,那么可以使用一对花括号,包围你需要的值。
如果不能,则使用new+你声明的数组类型(在第一个中括号里写你需要的数量,后面的括号留空)
var a = new int[10][][][];
int[] b = { 1, 2, 3, 4, 5 };
直接写完元素的写法无法使用var判断。
一个数组值(new int[ ])一旦创建完成变无法改变数量(变量那边想咋改咋改)
使用
在数组的变量名后加上中括号,中括号内写索引,就能访问数组内的值。
int[] a=new int[10];
a[0]=12;
a[1]=10;
a[2]=16;
Console.WriteLine(a[0]+a[1]+a[2]);
你可以像使用正常的变量一样使用他们,他们能读取,改写。每个索引对应的值都是独立的。
你也可以使用整数类型的变量或表达式放在索引里面,通常会这样配合循环使用。
int[] a = new int[10];
for (int i = 0; i < 10; i++)
{
a[i] = i * 10;
}
for (int i = 0; i < 10; i++)
{
Console.WriteLine(a[i]);
}
数组里的值是属于数组的,它会在创建时就会为所有的元素赋值初始值。所以你不必先为元素赋值再使用
长度
数组可以使用Length属性来获取他的长度。这样在修改数组长度时,不需要跟着改循环条件了
int[] p = { 1, 2, 3, 4 };
for (int i = 0; i < p.Length; i++)
{
p[i]++;
}
索引
数组的索引从0开始,总数量为你声明的长度。因此,最大可用的索引为总长度-1。
数组的长度可以是0,也就是一个元素都没有。此时索引0都是非法的
索引除了使用整数类型,还可以使用索引类型。
所以类型是专门为充当索引使用的类型,有专门的特殊写法。在整数类型前面加个^符号
^1表示倒数第一个,也就是最后一个元素。
^2表示倒数第二个。
^0是非法的索引。
虽然索引类型也可以表示正着数的情况,但是那种没法使用特殊写法。手动创建是很麻烦的。
范围
范围也是一种特殊类型,构建方式为:开头索引+..+结尾索引
使用范围会截取出数组的一部分,包含开头,不包含结尾。
开头索引和结尾索引都可以省略,省略就表示取到不能取为止
由这种方式获得的数组是全新的,和原来的没有关系。
改动原来的数组不会影响到新数组。
输出
一个类型应该如何转化为字符串是人为定义的。
而数组转字符串,只会显示他的类型。
如果希望显示数组的内容,可以使用string.Join方法
第一个参数填你要使用的分隔符,第二个参数填数组