C#语言基础(4)
本篇继续C#学习的笔记,上次的笔记中记录了关于C#的方法的构造与调用,本篇会继续关于方法的相关知识。
递归
方法内部又调用自身的过程
核心思想:将问题转移给范围缩小的子问题
适用性:在解决问题中,又遇到相同的问题
优点:将复杂的问题简单化
缺点:性能较差
应用:计算阶乘
编写一个函数,计算参数为8时的结果
(请使用递归实现)
1-2+3-4+5-6+7-8
使用递归的关键问题是防止无线递归
重载
两个方法名称相同,但参数列表不同。
用于在不同条件下解决同一类型的问题。
仅仅out与ref的区别不可以构成重载
C#内有很多内置的方法,他们大多有很多的重载方法,会读懂方法的说明可以更好地理解不同的重载方法的用途。
数组
从Array类派生的,一组数据类型相同的变量组合
一种空间连续的数据结构
元素通过索引(位置的序号)进行操作
定义
声明数组
数据类型[] 数组名;
初始化数组
数组名=new 数组类型[元素总数]
初始化的元素类型与声明时的类型必须相同。
例:int[] array01=new int[5];
string[] array02=new string[3];
int[]=a;
a=new int[6];//初始化new数据类型[容量] ,new指开辟空间,数据类型指多大,容量指几个,因此此处不能写为new a[]
a[0]=1;//通过索引读写每个元素
初始化
数组初始化后,内容中存储该数据类型的默认值
整形为0;非整形为0.0;char为\0;string为null;bool为false。
初始化+赋值
可以在数组初始化的同时对元素进行赋值
语法:数据类型[] 数组名=new 数据类型[]元素1,元素2{;
例如:int[] array01=new int[]{1,2,3,4,5};
初始化是[]内可以填入数组长度,但必须与所赋值的元素总数一致
声明+赋值
可以在数组声明的同时对元素进行赋值。
语法:数据类型[] 数组名={元素1,元素2}l
元素个数即为数组长度。
程序员可以省略初始化,但编译器内部仍然会new数据类型[]
不支持写法:
double[] array;
array={1.0,2.0};
访问数组元素
通过索引访问
可以通过数组的索引(位置的序号)进行读写操作
语法:数组名[]
通过for遍历
遍历:按照某种顺序访问每个元素
这种方法十分常见不做赘述。
通过foreach遍历
foreach是一种更简单更明了的读取数组元素的语句
语法:
foreach(元素类型 变量名 in 数组名称)
{
变量名即数组每个元素
}
//从头到尾一次读取数组元素,只能读取,不能修改
优点:使用简单
缺点:只能读取全部元素,不能修改元素
只能遍历实现Ienumerable的集合对象
常用方法及属性
数组的长度:数组名.Length
清楚元素值:Array.Clear
复制元素:Array.copy 数组名.CopyTo
克隆:数组名.Clone
查找元素:Array.IndexOf Array>lastIndexOf
排序:Array.Sort
反转:Array.Reverse
至此我们又学习到C#中的一大重要概念,将它与之前的结合,可以完成双色球彩票抽奖的功能。
class Class2
{
static Random random=new Random();
static void Main(string[] args) {
int[] lotteryNumber = new int[7];
BuyLottery(lotteryNumber);
Console.Write("您买的彩票为:");
foreach (var a in lotteryNumber)
{
Console.Write(a+"\t")