C#语言基础(4)

本文是C#语言基础系列的第四部分,主要讲解了递归的概念、优缺点、应用场景,以及数组的定义、初始化、访问方式和常用方法。通过示例介绍了如何使用递归计算阶乘,并详细阐述了数组的声明、初始化、赋值以及通过索引、for循环和foreach遍历数组的方法。最后提到了一些编程小技巧和堆栈溢出问题。
摘要由CSDN通过智能技术生成

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")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值