C#学习笔记-数组操作相关笔记(读自C#从入门到精通 第2版)

本文详细介绍了C#中的数组操作,包括一维、二维、三维及交错数组的定义,以及数组的基本操作如排序、反转、查找元素。此外,还探讨了数组与字符串之间的相互转化,如何在字符串中查找、删除字符数组元素,以及枚举的使用。通过实例展示了如何使用foreach遍历二维数组。
摘要由CSDN通过智能技术生成
一维数组

语法:数据类型[] 数组名 / 数组名 = new 数据类型[]

int[] a   /   a = new int[5]{1, 2, 3, 4, 5}   /   a = new int[5]
            string[] week = { "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun" };
            for(int i = 0; i < week.Length; i++)
            {
                Console.WriteLine(week[i]);
            }
            Console.ReadLine();
二维数组

语法:数据类型[, ]数组名

int[,] b = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };
for (int i = 0; i < 3; i++)
    for (int j = 0; j < 3; j++)
        Console.WriteLine("{0}行{1}列元素为{2}", i, j, b[i, j]);

for (int i = 0; i < 3; i++)
{
    for (int j = 0; j < 3; j++)
    {
        Console.Write("{0,-5}", b[i, j]); // 输出数组元素,每个元素占五格,靠左对齐
        /**
         * 1    2    3
        * 4    5    6
         * 7    8    9
         */
    }
    Console.WriteLine();
}
Console.ReadKey();
三维数组

可以把三维数组看做一本记录本,每页都是一个表格,那么,可以使用页号、行号、列号来定位三维数组的一个元素。
语法:数据类型[, , ] 数组名

交错数组

交错数组可以看成是数组的数组,交错数组的每个元素又是一个数组
语法:

     int[][] = new int[3][]
     {
         new int[] { 1, 2, 3 },
         new int[] { 4, 5, 6 },
         new int[] { 7, 8, 9 }
     }
int[][] c;
c = new int[3][];
c[0] = new int[] { 1, 2, 3 };
c[1] = new int[] { 4, 5, 6, 7 };
c[2] = new int[] { 8, 9, 10, 11, 12 };
for (int i = 0; i < c.Length; i++)
{
    for (int j = 0; j < c[i].Length; j++)
    {
        Console.Write("{0, -5}", c[i][j]);
    }
    Console.WriteLine();
}
/**
 * 1    2    3
 * 4    5    6    7
 * 8    9    10    11    12
 */
Console.ReadKey();

数组基本操作

数组排序与反转

Array类的静态方法Sort()可以实现数组的排序,无返回值。
语法:Array.Sort(数组名)

Array类的静态方法Reverse()可以实现数组的反转,无返回值。
语法:Array.Reverse(数组名)

int[] a = { 3, 8, 1, 7, 4 };
Array.Sort(a);
for (int i = 0; i < a.Length; i++)
{
    Console.Write("{0, -5}", a[i]); // 1    3    4    7    8
}
Console.WriteLine();
Array.Reverse(a);
for (int i = 0; i < a.Length; i++)
{
    Console.Write("{0, -5}", a[i]); // 8    7    4    3    1
}
Console.ReadKey();
查找数组元素

Array类的静态方法IndexOf( )可以判断数组是否包含与给定值相等的元素,是则返回对应数组元素的下标,否则返回-1。
语法:Array.IndexOf(数组名, 要查找的值)

int[] a = { 4, 5, 2, 7, 1 };
Console.WriteLine(Array.IndexOf(a, 4)); // 0
Console.WriteLine(Array.IndexOf(a, 10)); // -1
Console.ReadKey();

####数组求和,最大值,最小值,平均值
Sum(), Max(), Min(), Average()
语法:数组名.Sum()

int[] a = { 3, 8, 1, 7, 4 };
Console.WriteLine(a.Sum()); // 23
Console.WriteLine(a.Max()); // 8
Console.WriteLine(a.Min()); // 1
Console.WriteLine(a.Average()); // 4.6
Console.ReadKey();
数组字符串相互转化

String类的静态方法Join( )可以将数组中所有元素连接起来,生成一个字符串,返回值为该字符串。
语法:String.Join(分隔符, 数组名) --> Join( )方法分隔符类型为字符串

方法Split( )可以根据分隔符将字符串切分为多个部分,每个部分作为一个数组元素生成一个字符串数组,返回值为该字符串数组。
语法:字符串变量.Split(分隔符) --> Split( )方法中的分隔符类型为字符型

string[] a = { "this", "is", "a", "test", "!" };
string b = String.Join(" ", a);
Console.WriteLine(b);
string[] a1 = b.Split(' ');
for (int i = 0; i < a1.Length; i++)
{
    Console.WriteLine(a1[i]);
}
Console.ReadKey();
在字符串中查找、删除字符数组元素

String类方法IndexOfAny( )用于在字符串中查找给定字符数组中的所有元素,返回字符数组元素在字符串中首次出现的位置值,查找失败则返回-1。
语法:字符串变量.IndexOfAny(字符数组名)

String类方法LastIndexOfAny( )用于在字符串中查找给定字符数组中的所有元素,返回字符数组元素在字符串中最后出现的位置值,查找失败则返回-1。
语法:字符串变量.LastIndexOfAny(字符数组名)

String类方法Trim( )可以在字符串的首部和尾部去除给定字符数组中的所有元素,返回操作后的字符串。
语法:字符串变量.Trim(字符数组名)

char[] a = { 'a', 't', 'i' };
string str = "This is a test!";
Console.WriteLine(str.IndexOfAny(a)); // 2
Console.WriteLine(str.LastIndexOfAny(a)); // 13
char[] b = { 'T', 'h', 't' };
Console.WriteLine(str.Trim(b)); // is is a test!
Console.ReadKey();
枚举

枚举类型用于声明一组命名常数。
语法:enum 枚举类型名 {枚举成员列表}
例:enum Week { 星期一, 星期二, 星期三, 星期四, 星期五, 星期六, 星期天 };

枚举类型week包含七个常数,默认第一个常数为0,对应“星期一”,每个名称对应的常数都比前边一个加1,最后一个常数为6,对应“星期天”。
相当于为常数起了个名字,把七个常数组合在一起构成枚举类型week。

enum Week { 星期一 = 1, 星期二, 星期三, 星期四, 星期五, 星期六, 星期天 };
给出第一个名称星期一对应的常数为1,后边的名称对应的常数值分别是2、3、4、5、6、7。

// 定义枚举类型变量x,选择枚举类型中的一个名称为变量x赋值
Week x = Week.星期一;
// 定义枚举类型变量y,将整数2强制转换为week类型的值赋值给变量
Week y = (Week)2;
Console.WriteLine(x.ToString()); // 星期一
Console.WriteLine(y.ToString()); // 星期二
Console.WriteLine((Week)2); // 输出枚举类型Week中常量2对应的名称 --> 星期二
Console.WriteLine((int)Week.星期天); // 输出枚举类型Week中名称“星期天”对应的常量  -->  7
Console.ReadKey();
  • 枚举类型的最大作用是可以自定义一个类型,将许多相关的名称作为一个集合保存和使用,每个名称对应一个整型常量。
  • 相对于直接使用数值,使用枚举类型可以使代码更加清晰易懂,便于记忆。
  • 枚举类型的变量只能选择几个常量中的一个,方便控制变量取值范围,保证程序的执行过程安全可靠。
  • 常量值和枚举值之间转换方便,使用枚举类型使代码更容易编写和维护。
字符串与字符数组相互转化

使用语句“string str = new string(‘a’,5);”创建包含5个相同字符的字符串str,str对应的字符串为“aaaaa”。
事实上,我们可以使用任意一个字符类型数组初始化一个字符串。
反之,一个字符串可以直接作为一个字符类型数组使用,直接在字符串名后面加上下标即可

char[] c = { 'H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd', '!' };
string str = new string(c);
Console.WriteLine(str); // Hello World!
Console.WriteLine(str[0]); // H
Console.ReadKey();
foreach遍历二维数组
int[,] a = { { 1, 2, 3 }, { 4, 5, 6}, { 7, 8, 9} };
foreach (int x in a)
    Console.Write("{0, -4}", x);
Console.ReadKey(); // 1   2   3  4   5   6   7   8   9
  • 使用foreach循环遍历二维数组,访问数组元素的顺序是先行后列,因此输出结果为123456。
  • 如果需要按照先列后行遍历数组元素的话,需要使用嵌套的for循环。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值