PS:注释和讲解全在代码中
1. 数组的定义/遍历
注意C#的数组使用方式和C++略有不同
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace C4_程序设计
{
class 数组
{
static void Main()
{
//数组定义
int[] a = new int[5]{1,2,3,4,5}; //变量在栈空间,数组里面的内容在堆空间
//int[] b = new int[6]{1,2,3,4,5}; 错误,这里和C语言不一样,如果在后面用大括号声明数组元素,那么数组大小必须和声明数量一致!也就是没有默认补0的操作
double[] b = new double[12]; //正确
Console.WriteLine(b[5]); //没有赋值,默认为0,如果是string没有赋值,默认为空
string[] str;
str = new string[]{"one", "two", "three", "four", "five"}; //方框里没有填数字,但因为初始化了前5个变量,所以默认为5
//数组遍历
for (int i = 0; i < a.Length; i++) //遍历数组的所有元素
{
b[i] = a[i] * 2;
Console.Write("{0} ", a[i]);
}
Console.Write("\n");
foreach(double i in b)
Console.Write("{0} ", i); //和上面一样,相当于遍历数组的所有元素,类似于C++的for(auto it: G)
Console.Write("\n");
foreach (string i in str)
Console.WriteLine(i);
//二维数组
int[,] p = new int[3, 3]{{1,2,3},{25,35,45},{3000,4000,5000}}; //二维数组的定义与赋值
//int[,] p2 = new int[,]{{1,2,3},{2,3},{3,4,5}}; 错误!每一行的元素个数必须严格相同,和上面一样,不会自动补0或忽略
int[, ,] q = new int[4, 4, 4]; //三维数组类似
q[1, 1, 1] = 5;
Console.WriteLine("Text for q: {0}, {1}", q[1, 1, 1], q[2, 2, 2]);
for (int i = 0; i < p.GetLength(0); i++) //GetLength里的0指的是第1维
{
for (int j = 0; j < p.GetLength(1); j++) //GetLength里的1指的是第2维
Console.Write(p[i, j] + "\t"); //"\t"为制表符,强制对齐8位(或8位空格)
Console.Write("\n");
}
}
}
}