C#中的数组
一、C#数组简介数组从字面上理解就是存放一组数,但在 C# 语言中数组存放的并不一定是数字,也可以是其他数据类型。数组的特点:在一个数组中存放的值都是同一数据类型的。数组中某个指定的元素是通过索引来访问的。所有的数组都是由连续的内存位置组成的。数组从零开始建立索引,即数组索引从零开始。二、一维数组一维数组在数组中最常用,即将一组值存放到一个数组中,并为其定义一个名称,通过数组中元素的位置来存取值。
一、C#数组简介
数组从字面上理解就是存放一组数,但在 C# 语言中数组存放的并不一定是数字,也可以是其他数据类型。
数组的特点:在一个数组中存放的值都是同一数据类型的。数组中某个指定的元素是通过索引来访问的。
所有的数组都是由连续的内存位置组成的。
数组从零开始建立索引,即数组索引从零开始。
二、一维数组
一维数组在数组中最常用,即将一组值存放到一个数组中,并为其定义一个名称,通过数组中元素的位置来存取值。
定义一维数组的语法形式如下:
- //定义数组
- 数据类型[] 数组名;
- 数据类型[] 数组名 = {值 1, 值 2, ...}
- 数据类型[] 数组名 = new 数据类型[长度]{值 1,值 2,...}
举例如下:
- //定义 int 类型的数组
- int[] a = {1,2,3};
- //输岀数组中的一个元素
- Console.WriteLine(a[0]);
- //输出数组中的最后一个元素
- Console.WriteLine(a[a.Length‐1]);
三、多维数组
多维数组是指二维或二维以上的数组。一般我们最常用的是二维数组。定义多维数组的语法形式如下。
| |||||
| {{ , , | ...},{ | , | , | ...}}; |
从上面定义的语法可以看出,它与一维数组的定义非常类似,每多一个维度则在定义时的[] 中增加一个“,”。存取数组中的值也是将下标用“,”隔开。多维数组初始化:
- //若不指定初始值,那么每个元素编译器会提供默认值0
- int[,] arr = new int[2, 2];
3
- //若指定初始值,那么必须每个元素都要指定。
- int[,] arr = new int[2, 2] { { 2, 3 }, { 4, 5 } };
6
- //指定初始值后,长度可以省略,编译器会自动进行推算。
- int[,] arr = new int[, ] { { 2, 3 }, { 4, 5 } };
四、foreach遍历
foreach 循环用于列举出集合中所有的元素,foreach 语句中的表达式由关键字 in 隔开的两个项组成。 in 右边的项是集合名,in 左边的项是变量名,用来存放该集合中的每个元素。
该循环的运行过程如下:每一次循环时,从集合中取出一个新的元素值。放到只读变量中去,如果括号中的整个表达式返回值为 true,foreach 块中的语句就能够执行。
一旦集合中的元素都已经被访问到,整个表达式的值为 false,控制流程就转入到 foreach 块后面的执行语句。具体的语法形式 如下:
- foreach(数据类型 变量名 in 数组名)
- {
- //语句块;
- }
注意:foreach 语句仅能用于数组、字符串或集合类数据类型。举例如下:使用foreach遍历上一节中的数组
1 static void Main(string[] args)
- {
- int[,] arr = new int[2, 2] { { 2, 3 }, { 4, 5 } };
4
- foreach(int item in arr)
- {
- Console.WriteLine(item);
- }
- }
五、字符串分割
Split 方法用于按照指定的字符串来拆分原有字符串,并返回拆分后得到的字符串数组。
比如有一个字符串 “张三、李四、王五、赵六”,如果想将其分割成单独的字符串,此时就可以使用string类的split方法。
举例如下:
- static void Main(string[] args)
- {
3
4 string str = "张三、李四、王五、赵六";
5
6 string[] strarr = str.Split('、');
7
- foreach (string item in strarr)
- {
- Console.WriteLine(item);
- }
- }
六、结构体类型
结构体类型是一种自定义值类型,与类比较相似。由于结构体类型是值类型,在使用时会比使用类存取的速度更快,但灵活性方面没有类好。
定义语法:
- 访问修饰符 struct 结构体名称
- {
- //结构体成员
- }
其中:
- 访问修饰符
通常使用 public 或者省略不写,如果省略不写,代表使用 internal来修饰。
如果结构体中的内容要被其他类中的成员访问,需要将其访问修饰符设置为 public。
- 结构体名称
命名规则通常和类的命名规则相同,即每个单词的首字母大写。
- 结构体成员
包括字段、属性、方法以及事件等。但无法进行初始化操作。
在结构体中也能编写构造器,但必须带参数,并且必须为结构体中的字段赋初值。
结构体和类的区别如下表:
结构体 | 类 |
允许不使用new对其实例化 | 必须使用new实例化 |
没有默认构造方法 | 有默认构造方法 |
不能继承类 | 能继承类 |
不允许使用abstract、protected以及sealed修饰 | 允许使用abstract、protected以及sealed修饰 |
举例如下:
-
- /// <summary>
- /// 自定义结构体
- /// </summary>
- struct S1
- {
- public int num;
- }
8
-
- class Program
- {
- static void Main(string[] args)
- {
- S1 s;
- s.num = 5;
- ChangeValue(s);
16
-
- Console.WriteLine("修改之后的值(加1):{0}", s.num);
- }
19
-
- public static void ChangeValue(S1 s)
- {
- s.num++;
- }
- }
七、枚举类型
C#枚举类型和结构体类型都是特殊的值类型,应用也比较广泛。
枚举类型在定义时使用 enum 关键字表示,枚举类型的定义与类成员的定义是一样的,或者直接定义在命名空间中。定义枚举类型的变量的语法形式如下:
- 访问修饰符 enum 变量名 : 数据类型
- {
- 值l,
- 值2,
- }
其中:
- 访问修饰符与类成员的访问修饰符一样,省略访问修饰符也是代表使用 private 修饰符的。
- 数据类型指枚举中值的数据类型。只能是整数类型,包括 byte、short、int、long 等。
- 值1、值2、……在枚举类型中显示的值。但实际上每个值都被自动赋予了一个整数类型值,并且值是递增加
1 的,默认是从 0 开始的,也就是值 1 的值是 0、值 2 的值是 1。
如果不需要系统自动为枚举值指定值,也可以直接为其赋一个整数值。
34 | break; |
35 | case WeekEnum.TUE: |
36 | Console.WriteLine("周二上课"); |
37 | break; |
38 | case WeekEnum.WED: |
39 | Console.WriteLine("周三上课"); |
40 | break; |
41 | case WeekEnum.THU: |
42 | Console.WriteLine("周四上课"); |
43 | break; |
44 | case WeekEnum.FRI: |
45 | Console.WriteLine("周五上课"); |
46 | break; |
47 | case WeekEnum.SAT: |
48 | Console.WriteLine("周六休息"); |
49 | break; |
50 | } |
51 | } |
52 | } |
更多推荐
所有评论(0)