.NET Core CSharp初级篇 1-2 循环与判断
.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循环你可以简单的理解位循环 i 当 i 满足时跳出。不过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
.NET Core CSharp初级篇 1-2 循环与判断的更多相关文章
- .NET Core CSharp初级篇 1-1
.NET Core CSharp初级篇 1-1 本节内容是对于C#基础类型的存储方式以及C#基础类型的理论介绍 基础数据类型介绍 例如以下这句话:"张三是一名程序员,今年15岁重50.3kg ...
- NET Core CSharp初级篇 1-3面向对象
.NET Core CSharp初级篇 1-3 本节内容为面向对象初级教程 类 简介 面向对象是整个C#中最核心最有特色的一个模块了,它很好的诠释了程序与现实世界的联系. 面向对象的三大特征:继承.多 ...
- .NET Core CSharp初级篇 1-5 接口、枚举、抽象
.NET Core CSharp初级篇 1-5 本节内容类的接口.枚举.抽象 简介 问题 如果你需要表示星期或者是某些状态,使用字符串或者数字是否不直观? 你是否发现,无论何种电脑,它的USB口的设计 ...
- .NET Core CSharp初级篇 1-6 类的多态与继承
.NET Core CSharp初级篇 1-6 本节内容为类的多态与继承 简介 终于讲到了面向对象三大特性中的两大特性--继承与多态.通过继承与多态,我们能很好的将类的拓展性发挥到了极致.在下面的内容 ...
- .NET Core CSharp初级篇 类的生命历程
.NET Core CSharp初级篇 1-7 本节内容为类的生命周期 引言 对象究竟是一个什么东西?对于许多初学者而言,对象都是一个非常抽象的知识点.如果非要用一句话描述,我觉得"万物皆对 ...
- .NET Core CSharp初级篇 1-8泛型、逆变与协变
.NET Core CSharp初级篇 1-8 本节内容为泛型 为什么需要泛型 泛型是一个非常有趣的东西,他的出现对于减少代码复用率有了很大的帮助.比如说遇到两个模块的功能非常相似,只是一个是处理in ...
- CSharp初级篇 1-4 this、索引器、静态、常量以及只读
.NET Core CSharp初级篇 1-4 本节内容为this.索引器.静态.常量以及只读 简介 在之前的课程中,我们谈论过了静态函数和字段的一小部分知识,本节内容中,我们将详细的讲解关于对象操作 ...
- .NET Core CSharp 中级篇 2-2 List,ArrayList和Dictionary
.NET Core CSharp 中级篇 2-2 本节内容为List,ArrayList,和Dictionary 简介 在此前的文章中我们学习了数组的使用,但是数组有一个很大的问题就是存储空间不足,我 ...
- .NET Core CSharp 中级篇 2-1 装箱与拆箱
.NET Core CSharp 中级篇 2-1 本节内容为装箱与拆箱 简介 装箱和拆箱是一个相对抽象的概念.你可以想象一下一堆满载货物的大卡车,他是由许多工人将货物集中堆放装入的,对于我们而言在没有 ...
随机推荐
- OverLoad怎么用
首先给出一个实例 package practice3; public class TryOverLoad { public static void main(String[] args) { Syst ...
- Linux查看文件或文件夹大小du命令
du命令用于显示目录或文件的大小. du会显示指定的目录或文件所占用的磁盘空间. 语法: du [-abcDhHklmsSx][-L <符号连接>][-X <文件>][--bl ...
- IT兄弟连 HTML5教程 HTML5文字版面和编辑标签 HTML框架结构
使用HTML框架结构可以把一个浏览器窗口划分为若干个小窗口,每个窗口可以显示不同的URL网页,每个框架里的网页相互独立.这样不仅可以非常方便地在浏览器中同时浏览不同的页面效果,而且可以非常方便地完成导 ...
- ETCD:配置参数
原文地址:Configuration flags etcd通过配置文件,多命令行参数和环境变量进行配置, 可重用的配置文件是YAML文件,其名称和值由一个或多个下面描述的命令行标志组成.为了使用此文件 ...
- 【Java基础】正则表达式
目录 正则表达式 什么正则表达式 普通字符 预定义字符 特殊字符 数量限定字符 定位字符 选择符和分组 反向引用 预搜索 运算符的优先级 常用正则 附录 正则表达式 本文的大部分内容转载自正则表达式从 ...
- Asp .Net Core Excel导入和导出
ASP .Net Core使用EPPlus实现Api导入导出,这里使用是EPPlus 4.5.2.1版本,.Net Core 2.2.在linux上运行的时候需要安装libgdiplus . 下面我们 ...
- Supply Initial Data提供初始数据 (EF)
Open the Updater.cs (Updater.vb) file, located in the MySolution.Module project's Database Update fo ...
- CSS学习笔记-背景属性
一.背景尺寸属性: 1.含义: 背景尺寸属性是CSS3中新增的一个属性,专门用于设置背景图片大小 2.格式: 1.1具体像素: backgro ...
- HbaseShell启动
找到hbase目录 进入bin目录 ./hbase shell 成功
- VirtualBox设置自动适应屏幕
设备 --> 安装增强功能 等待安装完成,就能自动适应屏幕大小了