.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

博客园

.NET Core CSharp初级篇 1-2 循环与判断的更多相关文章

  1. .NET Core CSharp初级篇 1-1

    .NET Core CSharp初级篇 1-1 本节内容是对于C#基础类型的存储方式以及C#基础类型的理论介绍 基础数据类型介绍 例如以下这句话:"张三是一名程序员,今年15岁重50.3kg ...

  2. NET Core CSharp初级篇 1-3面向对象

    .NET Core CSharp初级篇 1-3 本节内容为面向对象初级教程 类 简介 面向对象是整个C#中最核心最有特色的一个模块了,它很好的诠释了程序与现实世界的联系. 面向对象的三大特征:继承.多 ...

  3. .NET Core CSharp初级篇 1-5 接口、枚举、抽象

    .NET Core CSharp初级篇 1-5 本节内容类的接口.枚举.抽象 简介 问题 如果你需要表示星期或者是某些状态,使用字符串或者数字是否不直观? 你是否发现,无论何种电脑,它的USB口的设计 ...

  4. .NET Core CSharp初级篇 1-6 类的多态与继承

    .NET Core CSharp初级篇 1-6 本节内容为类的多态与继承 简介 终于讲到了面向对象三大特性中的两大特性--继承与多态.通过继承与多态,我们能很好的将类的拓展性发挥到了极致.在下面的内容 ...

  5. .NET Core CSharp初级篇 类的生命历程

    .NET Core CSharp初级篇 1-7 本节内容为类的生命周期 引言 对象究竟是一个什么东西?对于许多初学者而言,对象都是一个非常抽象的知识点.如果非要用一句话描述,我觉得"万物皆对 ...

  6. .NET Core CSharp初级篇 1-8泛型、逆变与协变

    .NET Core CSharp初级篇 1-8 本节内容为泛型 为什么需要泛型 泛型是一个非常有趣的东西,他的出现对于减少代码复用率有了很大的帮助.比如说遇到两个模块的功能非常相似,只是一个是处理in ...

  7. CSharp初级篇 1-4 this、索引器、静态、常量以及只读

    .NET Core CSharp初级篇 1-4 本节内容为this.索引器.静态.常量以及只读 简介 在之前的课程中,我们谈论过了静态函数和字段的一小部分知识,本节内容中,我们将详细的讲解关于对象操作 ...

  8. .NET Core CSharp 中级篇 2-2 List,ArrayList和Dictionary

    .NET Core CSharp 中级篇 2-2 本节内容为List,ArrayList,和Dictionary 简介 在此前的文章中我们学习了数组的使用,但是数组有一个很大的问题就是存储空间不足,我 ...

  9. .NET Core CSharp 中级篇 2-1 装箱与拆箱

    .NET Core CSharp 中级篇 2-1 本节内容为装箱与拆箱 简介 装箱和拆箱是一个相对抽象的概念.你可以想象一下一堆满载货物的大卡车,他是由许多工人将货物集中堆放装入的,对于我们而言在没有 ...

随机推荐

  1. OverLoad怎么用

    首先给出一个实例 package practice3; public class TryOverLoad { public static void main(String[] args) { Syst ...

  2. Linux查看文件或文件夹大小du命令

    du命令用于显示目录或文件的大小. du会显示指定的目录或文件所占用的磁盘空间. 语法: du [-abcDhHklmsSx][-L <符号连接>][-X <文件>][--bl ...

  3. IT兄弟连 HTML5教程 HTML5文字版面和编辑标签 HTML框架结构

    使用HTML框架结构可以把一个浏览器窗口划分为若干个小窗口,每个窗口可以显示不同的URL网页,每个框架里的网页相互独立.这样不仅可以非常方便地在浏览器中同时浏览不同的页面效果,而且可以非常方便地完成导 ...

  4. ETCD:配置参数

    原文地址:Configuration flags etcd通过配置文件,多命令行参数和环境变量进行配置, 可重用的配置文件是YAML文件,其名称和值由一个或多个下面描述的命令行标志组成.为了使用此文件 ...

  5. 【Java基础】正则表达式

    目录 正则表达式 什么正则表达式 普通字符 预定义字符 特殊字符 数量限定字符 定位字符 选择符和分组 反向引用 预搜索 运算符的优先级 常用正则 附录 正则表达式 本文的大部分内容转载自正则表达式从 ...

  6. Asp .Net Core Excel导入和导出

    ASP .Net Core使用EPPlus实现Api导入导出,这里使用是EPPlus 4.5.2.1版本,.Net Core 2.2.在linux上运行的时候需要安装libgdiplus . 下面我们 ...

  7. Supply Initial Data提供初始数据 (EF)

    Open the Updater.cs (Updater.vb) file, located in the MySolution.Module project's Database Update fo ...

  8. CSS学习笔记-背景属性

    一.背景尺寸属性:    1.含义:        背景尺寸属性是CSS3中新增的一个属性,专门用于设置背景图片大小 2.格式:        1.1具体像素:             backgro ...

  9. HbaseShell启动

    找到hbase目录 进入bin目录 ./hbase shell 成功

  10. VirtualBox设置自动适应屏幕

    设备 --> 安装增强功能 等待安装完成,就能自动适应屏幕大小了