.NET Core CSharp初级篇 1-2

本节内容循环与判断

循环

循环是一个在任何语言都是极为重要的语法,它可以用于很多东西,例如迭代数组等等。在C#中,语法层面的循环有:for , foreach ,while,do goto五种。循环你可以理解为当某条件满足时,重复的执行一段代码。接下来我们开始讲讲这五种循环的使用方法及优缺点。

for 循环

for循环可以说是最为常用的循环方式了,for循环时由以下部分组成:

  • 起始条件
  • 循环条件
  • 状态改变方式

这是大多数语言for循环的组成,例如以下例子

for(int i =0;i<5;i++)
{
//表示从i=0开始,每次i+1,当i<5的时候跳出循环
//并且每次循环开始都会判断循环条件是否满足,如果满足则会继续进行循环
}

非常简单,对吧。状态改变方式可以是多样的,你可以把它改成 i = i+2 等等各种方式。

foreach 循环

foreach循环在其他语言中有着不同的实现方式,但是在C#中,foreach是遍历每一个元素并返回,而for循环你可以简单的理解位循环 ii 满足时跳出。不过foreach循环并不是每一个有集合或者数组属性的东西都可以循环,使用foreach循环的前提就是该元素集合必须继承IEnumerable接口。因为foreach在遍历元素的时候,第一次遍历会调用GetEnumerator()方法将第一个元素赋值给循环的临时变量,之后每次调用MoveNext()方法,直到循环结束。看下面例子。

foreach(var a in list)
{
/*
第一次时调用GetEnumerator()将第一个变量赋值给a,然后调用MoveNext()将后续变量赋值给a */
}

while 循环

while循环是单条件循环,也是一个非常常用的循环,在指定的布尔表达式的计算结果为 true 时,while语句会执行一条语句或一个语句块。 由于在每次执行循环之前都会计算此表达式,所以while循环会执行零次或多次。例:

while(expression)
{
//当expression为真时,才会继续循环。
}

do 循环

do循环也被称为 do......while 循环,它的原理和while循环时一样的,都是当表达式为真的时候进行,但是不同于while的是,如果表达式一开始就为假,while循环不会执行循环体内的代码,而do循环会至少执行一次(通常是一次,除非你在循环体内对表达式结果进行了修改)。

do
{
//todo
}while(expression)

goto 循环

事实上goto不能称之为循环,但是它确实可以实现类似于循环的功能。但是它也可以作为跳出循环的一种方式,不过在判断语句中也会有它的用物之地,在后面的判断介绍中我会进行详细的说明。

lb:
//todo 这表示在lb到goto lb之间循环
goto lb; while(true)
{
//作为跳出循环的方式
goto finish;
}
finish:
//todo

判断

在C#中实现判断的方式通常有三种方式

  • if else if else语句
  • switch 语句
  • 三元表达式?

if 语句

if语句基于布尔表达式的值来识别运行哪个语句,需要注意的是,if判断结果如果为真的话,后面的else if和else都不再进行判断。例如:

if(condition)
{
if(condition3)
{
//嵌套判断,满足上一级条件又满足下一级条件
}
}
else if(condition1)
{
}
else if(condition2)
{
}
else
{
}

若condition验证为真,后面的condition都不再进行判断。if语句总体来说还是非常简单的

switch 语句

switch语句也称为开关语句,它根据与匹配表达式 匹配的模式,从候选列表中选择单个开关部分 进行执行。如果其中一个条件满足的时候,开关打开,运行其中的代码。每一个开关都应该有相应的跳出语句。特别的,之前讲到的goto就可以作为跳转的语句。例如:

//i是一个变量,不是表达式
switch(i)
{
case 1:
break;
case 2:
goto case 1;
default:
break;
}

三元表达式?

?表达式其实是一个只能判断两种结果的表达,也就是是能判断true和false,用法和 if 语句是一致的。直接看例子吧:

    int a =3;
int b = 0;
//这个意思是a==3为真的话,那么b=10,如果为假,b=5
a ==3?b=10:b=5;

几点补充

循环的跳出:

循环跳出有三种方式,

  • break
  • continue
  • goto

break是指跳出整个循环,直接运行后面的代码,continue是指跳过本次循环,直接进入下一次循环条件判断,而goto就是指跳转到指定的标签位置。比较需要注意的就是break跳出和continue跳出的方式,本质区别就是一个为终止循环,一个是跳过本次。

运算的简写

这个本来应当在上一节进行讲解的,但是考虑到这个写法在循环中运用比较多,因此在本节进行讲解。

看以下例子

int i =0;
i+=2;//等价于i = i + 2
//请问下面这两种有何区别?
int b = ++i;
b = i++;
//如果运算符在前,例如++i,表示先进行i=i+1操作,然后进行赋值,i++表示先进行赋值,随后进行加法操作

练习题

请问下列两种判断,哪种效率高?为什么?

//Sample1:
if(a>5)
//todo
else if(a==5)
//todo
else
//todo
//Sample 2:
if(a>5)
//todo
if (a==5)
//todo
else
//todo
  • 利用switch语句,实现输入1,输出星期1,输入2,输出星期二

  • 请试着使用循环实现数组的访问、累加等操作

  • 试问该循环一共运行多少次

for(int i = 0;i<9;++i)
for(int j =0;j<7;j++)

前往Github获取更多本节资料(PPT,实例代码)

如果我的教程帮到了您,希望您动动小手,在GitHub给我一个star

Github

BiliBili主页

WarrenRyan's Blog

博客园

最新文章

  1. 几个有趣的WEB设备API(二)
  2. Python2 基本数据结构源码解析
  3. python学习03——设计,与input有关
  4. 【linux环境下】RabbitMq的安装和监控插件安装
  5. 最大子列和CT 01-复杂度2 Maximum Subsequence Sum
  6. winform 记录全局异常捕获
  7. inline-block 前世今生
  8. rcp(插件开发)The type XXX cannot be resolved. It is indirectly referenced from required .class files解决办法
  9. 【Better Code】面向切面编程
  10. IDL绘制黑体辐射曲线
  11. 笔记-AndroidStudio开发环境的搭建
  12. OpenCV基础篇之画图及RNG随机数对象
  13. TabHost+RadioGroup搭建基础布局
  14. socket-详细分析No buffer space available(转)
  15. Hyperledger Fabric channel配置交易
  16. PHP安装过程中问题详解
  17. Windows 上的 SSH?使用 PowerShell Remoting 远程管理 Windows 服务器
  18. SpringBoot Mybatis整合(注解版),SpringBoot集成Mybatis(注解版)
  19. hadoop mongodb install(3)
  20. php缓存类

热门文章

  1. Java连载58-静态内部类、成员内部类详解
  2. 【Unity游戏开发】性能优化之在真机上开启DeepProfile与踩坑
  3. go语言的json
  4. 解决maven创建web项目过慢的问题
  5. 解决NuGet下载太慢的问题
  6. 并发容器之ConcurrentLinkedQueue
  7. MAC 软件提示已损坏,需要移到废纸篓的解决方法
  8. JavaScript 运动(加速度运动,弹性运动)
  9. Java 国际化标准程序实现
  10. 数据处理之以OLEDB方式读取Excel数据丢失的原因及解决方法