本篇属于:从零开始学C# | 基础篇 | 05
先来聊聊天
假如你是一名老师,一次考试过后,你需要存储所有学生的成绩,后期进行分析与处理。
然后,你便定义了从stu1到stu49的整数型变量,存了近一个小时才完事。第二天当你需要调用调用时,你看着49个变量,陷入了沉思。。。
集体生活
事实上,C#早就考虑到了这种情况,它为我们提供了一种数据类型,用于方便的存储同类型的数据。
注意:数组属于引用类型,所以请使用new关键字来进行创建。
要声明数组,只需要在声明数据类型后加上一对中括号即可:
double[] score;
double[] score = new double[10]; //本语句指定了数组长度
double[] score = {93.0,77.0}; //本语句直接给数组赋值
花名册
这时你大概又要犯愁了,怎么访问里面的具体数据呢?其实,你可以通过索引访问他们。
索引类似于排队,只不过第一个人在第0号位,第二个人在第1号位...这样罢了,我们可以通过数组名[索引]
来访问指定的数据:
double[] score = {93.0,77.0,59.0,79.5,99,97,85.5,83.5,81,87};
Console.WriteLine(score[0].ToString()); //访问输出第一个元素
Console.WriteLine(score[3].ToString()); //访问输出第四个元素
那这个数组有多么长呢?获取任何一个数组的Length属性即可。
ArrayList
在程序的第一行添加如下引用:
using System.Collections;
初始化:
ArrayList 名字 = new ArrayList();
这家伙很好的像我们解释了什么叫"海纳百川 有容乃大"。你可以使用Add()
方法,随便往里面添加各种数据类型的数据,并且他还可以动态申请内存空间,简直跟Python的列表一模一样。
几个常见的操作:
ArrayList arm = new ArrayList();
arm.Add(1); //对你没看错添加什么都行
arm.Add("DPI");
arm.Add(System.Collections.ArrayList);
arm.Remove(1); //删除元素
arm.Sort(); //排序
arm.Clear(); //清空元素
不建议使用ArrayList进行新的开发,相反,我们建议使用List<T>类。
List<T>
在程序的第一行添加如下引用:
using System.Collections.Generic;
List<T>表示泛型集合,现在我们无需理解何为泛型,只需要在声明时将T换成你想要的元素类型即可。
例如:
List<double> score = new List<double>;
List<T>的几种基本方法与ArrayList的相同。
遍历
使用foreach循环遍历这种数据结构,基本语法
foreach (var item in 集合的名字)
{
//对集合中每一个元素做的事情
}
配对
现在,我们还剩下最后一个问题--将学生的名字与成绩关联起来。
这时,我们就需要将学生的名字与成绩进行配对。
我们有两种最常见的数据类型:Dictionary<TKey,TValue>与HashTable类,我们在这里就先说HashTable类:
Hashtable score = new Hashtable();
score.Add("张小明",75);
score.Add("赵日地",96);
int zrd_score = score["赵日地"]; //获取赵日地的分数
这时我们称学生名字为键(Key),成绩为值(Value)。我们可以通过键查找值,故键名不允许重复,而值是可以的。
在使用foreach变量此类型的过程中,你得到的item是一个DictoryEntry类型,里面的Key与Value属性分别对应着字典中的Key与Value:
Hashtable score = new Hashtable();
score.Add("张小明",75);
score.Add("赵日地",96);
score.Add("李华",89);
score.Add("郑金星",62);
foreach (var item in score)
{
Console.WriteLine(item.Key + "考了" + item.Vaule.ToString() + "分。");
}
即可输出每个学生的分数。
C#非常显著的一个特点就是硬类型、硬编码,归类方式非常严格,而不是像Python一样,鱼龙混杂的东西都可以放在一起。
网友评论