c#数组总结
·
1.一维数组
//数组:存储相同类型的数据的容器,并且数组是有大小的,操作数组时候都是通过索引值进行操作
//这个索引值也可以称为下标,索引值从0开始,长度从1开始,最大的索引值=长度-1,并且数组都是顺序的
//数组都是基于Array的
//定义数组:数据类型[] 变量名;
//变量名一般在后面加s 例如names ages等
int[] ages;//定义整型数组,默认值为0
bool[] sexs;//定义布尔数组,默认值为false
string[] names;//定义字符串数组,默认值null
char[] chars;//定义字符数组,默认值是\0
//赋值
ages = new int[5];//赋值长度为10空数组
sexs = new bool[10];
//赋值的其他方式
names = new string[5] {"清清", "清清", "清清", "清清", "清清"};//赋值的时候指定长度和初始化元素
ages = new int[] { 1, 2, 3, 4, 5 };//不指定长度 长度由元素个数确定
int[] num = { 1, 2, 3 };//字面量定义数组
string[] msgs = new string[10];
//修改数组里面对应位置的元素
msgs[0] = "清清";
msgs[1] = "皖皖";
msgs[2] = "紫幻";
msgs[3] = "道崽";
msgs[4] = "信";
//msg[5] = "ll";//索引超出了数组界限
//添加多个数据
for (int i = 0; i < msgs.Length; i++)//msgs.Length 数组长度的属性
{
msgs[i] = i + "狼队";//给数组每一个元素进行赋值
}
//取出一个数组元素,通过下标取出元素
Console.WriteLine(msgs[1]);
//取出多个元素,使用for循环遍历
for (int i = 0; i < msgs.Length; i++)
{
Console.WriteLine(msgs[i]+"----");
}
//使用foreach进行遍历 item = msgs[i]
//item 每一个元素
foreach (string item in msgs)
{
Console.WriteLine(item+"+++");
}
//for和foreach的区别
//foreach 简单 缺点:不能通过i访问元素,不能访问元素所在的位置
//数组存储不同类型的(了解的,以后想存储不同类型的数据一般使用ArrayList)
//定义一个对象类型的数据
object[] arr = new object[5] {1,2,3,4,"张三"};
//Console.WriteLine(arr[0]+10);//arr[0] 是object类型,把object类型转成整型的
foreach (var item in arr)
{
Console.WriteLine(item);
}
Console.WriteLine(arr);//System.Object[]
2.多维数组
//c#数组可以定义成一维数组 也可以定义成多维数组,
//1.定义二维数组可以理解为几行几列
//int[,] ints = new int[2,3];
//2.定义二维数组,不用指定维度的长度,按照数据自动推导
int[,] ints = new int[,]
{
{ 1, 2 ,3},
{ 4, 5, 6},
{ 7, 8, 9},
};
//3.定义一个三维数组分为1维空间 2维空间 3维空间
int[,,] ints1 = new int[2,3,4];
//4.定义多维数组
//int[n - 1个逗号] = new int[每个维度的长度];
//定义一个三维数组的不带长度的定义方式
int[,,] ints2 = new int[,,]
{
{
{
1, 2,3
}
},
{
{
1,2,3
}
},
};
//定义二维的字符串数组
string[,] strings = new string[,]
{
{"清清","皖皖","紫幻" },
{"道崽","信","sk" },
{"梓墨","暖阳","听悦" },
{"小麦","玖欣","老林" },
};
//
Console.WriteLine(strings.Length);//32位总长度12
Console.WriteLine(strings.LongLength);//64位总长度12
Console.WriteLine(strings.Rank);//2 维度数
Console.WriteLine(strings.GetLength(0));//4 对应维度的长度
Console.WriteLine(strings.GetLength(1));//3 对应二维维度的长度
//取出指定位置的元素 多维数组[每个维度的索引]
Console.WriteLine(strings[0,0]);//清清
Console.WriteLine(strings[0,1]);//皖皖
strings[3, 0] = "昭珏";//修改指定位置的数据
Console.WriteLine(strings[3,0]);
//for循环进行取出所有值
for (int i = 0; i < strings.GetLength(0); i++)//遍历一维数组 相当于行 4
{
for (global::System.Int32 j = 0; j < strings.GetLength(1); j++)//遍历二维数组 相当于列 3
{
Console.Write(strings[i,j]); //i = 0 ,j= 0 1 2
}
Console.WriteLine(" ");
}
//使用foreach进行遍历
foreach (var item in strings)
{
Console.WriteLine(item+"----");
}
//通过for循环添加
string[,] names = new string[5, 10];//初始化的时候不指定数据的元素
for (int i = 0; i < names.GetLength(0); i++)
{
for (global::System.Int32 j = 0; j < names.GetLength(1); j++)
{
names[i, j] = $"行:{i} 列:{j}";//动态修改数组数据
}
}
Console.WriteLine(names[3,9]);//行:3 列:9
foreach (var item in names)
{
Console.WriteLine(item+"===");
}
//练习:定义一个二维数组 叫做arr3
//arr3[0,3] ===> 10
//arr3[1,2] ===> 20
//arr3[2,2] ===> 30
int[,] ints3 = new int[, ]
{
{0,0,0,10 },
{0,0,20,0 },
{0,0,30,0 }
};
//随机昵称
string[] xings = { "", "", "", "", "", "" };//姓
string[] names1 = {"","","","","","","" };
Random rnd = new Random();
int index = rnd.Next(0,xings.Length);
int jndex1 = rnd.Next(0,names1.Length);
Console.WriteLine(xings[index] + names1[jndex1]);
3.交错数组
//交错数组:大数组包含小数组,也就是数组里面的元素还是数组
//交错数组和多维数组的区别:交错数组每一个长度都可以不同,多维数组每一个维度长度都必须相同
int[] i1s = new int[4] { 1, 2, 3, 4 };//一维数组
int[] i2s = new int[5] { 1, 2, 3, 4, 5 };//一维数组
//两层交错数组 int[][] 变量 =new int[][]{}初始化
int[][] ints = new int[][]
{
i1s,//长度4
i2s,//长度5
new int[]{1,2,3,4,5,999}//长度6
};
//取元素值(分开取值)
int[] arr = ints[1];//i2s这个数组
int a = arr[4];//再从arr数组取出对应值
Console.WriteLine(a);
//一句话取值
Console.WriteLine(ints[2][5]);//999
ints[1][2] = 888;//修改指定位置元素
//for循环进行取值
for (int i = 0; i < ints.Length; i++)//遍历最外层数组,长度3
{
Console.WriteLine(ints[i].Length+"sssss");//每个小数组的长度
//ints[i]//最外层数组的每一个元素,又是数组,再次遍历每一个数组
for (global::System.Int32 j = 0; j < ints[i].Length; j++)
{
Console.WriteLine($"({i}:{j}={ints[i][j]})");//i=0 j=0 1 2 3;i=1 j=0 1 2 3 4;i=2 j== 1 2 3 4 5
}
}
//foreach遍历
foreach (var item in ints)//遍历外层的数组 item又是一个数组
{
foreach (var item1 in item)//再次遍历内层每个数组
{
Console.WriteLine(item1+"+++");
}
}
}
}
}
//1.一维数组定义
//int[] is = new int[3] {1,2,3}
//2.二维数组
//int[,] is = new int[,]
//{
// {1,2,3 }
// {4,5,6 }
//};
//3.交错数组 二层交错数组
//int[][] is = new int[][] { new int[] { 1, 2 }, new int[] { 3, 4 } };
4.存储引用类型
static void Main(string[] args)
{
//数组是引用类型
int[] arr = new int[] { 1, 2, 3 };
int[] arr2 = arr;//赋值
arr[0] = 999;
Console.WriteLine(arr2[0]);
//存储10个对象类型
//数组类型定义:数组类型[] 变量名 = new 数组类型[长度];
People[] pls = new People[10];
for (int i = 0; i < pls.Length; i++)
{
People p1 = new People() { Name = "学生" + i };//构建对象给属性赋值
//添加到数组里面
pls[i] = p1;
}
//验证 遍历
foreach (People p in pls)//pls数组存储的是People类型
{
Console.WriteLine(p.Name+"===");
}
Console.WriteLine(string.Join("-",arr));//99-2-3 按照分隔符 进行分割数组里面元素
}
}
public class People
{
public string Name { get; set; }
}
}
更多推荐
所有评论(0)