基础系列(5)—— C#控制语句
语句是程序中最小程序指令。C#语言中可以使用多种类型的语句,每一种类型的语句又可以通过多个关键字实现。以下是C# 语言中使用的主要控制语句
类别 关键字
选择语句 if、else、switch、case
循环语句 do、for、foreach、in、while
跳转语句 break、continue、default、goto、return
异常处理语句 throw、try-catch、try-finally
检查和未检查语句 checked、unchecked
非保护和固定语句 unsafe、fixed
锁定语句 lock
一、选择语句
选择语句根据某个条件是否成立,来控制程序的执行流程。有两种结构的选择语句:
if-else 结构
switch-case 结构
if (expression)
statement1
[else
statement2]
if (x > )
if (y > )
Console.Write("Statement_1");
else
Console.Write("Statement_2");
if (x > )
{
if (y > )
Console.Write("Statement_1");
}
else
Console.Write("Statement_2");
if (Condition_1)
Statement_1;
else if (Condition_2)
Statement_2;
else if (Condition_3)
Statement_3;
……
else
Statement_n;
switch (<testVar>)
{
case <comparisonVal1>:
<如果<testVar>等于<comparisonVal1>时执行的语句>
break;
case <comparisonVal2>:
<如果<testVar>等于<comparisonVal2>时执行的语句>
break;
……
case <comparisonValN>:
<如果<testVar>等于<comparisonValN>时执行的语句>
break;
default:
<如果没有与<testVar>匹配的<comparisonValX>时执行的语句>
break;
}
using System;
class SwitchTest
{
static void Main()
{
int n = ;
switch(n)
{
case :
case :
case :
Console.WriteLine("It's 1, 2, or 3.");
break;
default:
Console.WriteLine("Not sure what it is.");
break;
}
}
}
It's 1, 2, or 3.
二、循环语句
语言中提供了以下4种循环语句:
· do-while
· for
· foreach-in
· while
do
{
statement
} while (expression);
// statements_do.cs
using System;
public class TestDoWhile
{
public static void Main ()
{
int x = ;
do
{
Console.WriteLine(x);
x++;
}
while (x < );
}
}
(二)for语句
for语句通常用来让一条语句或一个语句块执行一定的次数。for语句的一般形式:
for ([initializers]; [expression]; [iterators])
{
statement
}
其执行流程为:
首先初始化
initializers。接着,检查
expression。如果为 true,执行
statement,并重新计算循环计数器的值。如果为
false,则退出循环。返回上一步,继续执行。因为对 expression
的测试是在循环体执行之前,所以 for 语句可执行 0
次或多次。
语句的所有表达式都是可选的;例如,下列语句用于写一个无限循环:
for (;;)
{
...
}
// statements_for.cs
// for loop
using System;
class ForLoopTest
{
static void Main()
{
for (int i = ; i <= ; i++)
{
Console.WriteLine(i);
}
}
}
foreach (type identifier in expression)
{
staterment
}
int[] numbers = { , , , , , , -, -, };
foreach (int i in numbers)
{
System.Console.WriteLine(i);
}
foreach (ItemType item in myCollection)
myCollection 必须满足下面的要求。
while (expression)
{
statement
}
expression 表示 bool
类型的表达式。用来测试循环是否终止。statement
表示需要循环执行的语句。while 语句和 do-while 语句不同,do-while
是先执行循环体再判断条件,而 while 是先判断条件。如果条件为
true,则执行循环体,否则将跳过循环体,执行 while
块后面的代码。因此,while 语句中的循环体可能执行 0
次或多次。在
while 循环体中,可以使用 break、goto、reture 或 throw
语句跳出循环。如果要跳转到下一次循环,可在循环体中使用 continue
语句。
// statements_while.cs
using System;
class WhileTest
{
static void Main()
{
int n = ;
while (n < )
{
Console.WriteLine("Current value of n is {0}", n);
n++;
}
}
}
Current value of n is
Current value of n is
Current value of n is
Current value of n is
Current value of n is
三、 跳转语句
跳转语句用于从程序的一个地方把执行控制转移到另一个地方,每一条跳转语句的应用都会增加程序执行流程的分支。C#语言中可使用以下4种跳转语句:
· break
· continue
· goto
· return
(一) break 语句
break 语句用于中止当前执行的循环或它所在的 switch 语句,把控制交给循环或 switch 结构后面的语句。
示例:
在此例中,条件语句包含一个应该从 1 计数到 100 的计数器;但 break 语句在计数达到 4 后终止循环。
// statements_break.cs
using System;
class BreakTest
{
static void Main()
{
for (int i = ; i <= ; i++)
{
if (i == )
{
break;
}
Console.WriteLine(i);
}
}
}
输出:
下面的示例演示break在switch语句中的用法。
// statements_break2.cs
// break and switch
using System;
class Switch
{
static void Main()
{
Console.Write("Enter your selection (1, 2, or 3): ");
string s = Console.ReadLine();
int n = Int32.Parse(s); switch (n)
{
case :
Console.WriteLine("Current value is {0}", );
break;
case :
Console.WriteLine("Current value is {0}", );
break;
case :
Console.WriteLine("Current value is {0}", );
break;
default:
Console.WriteLine("Sorry, invalid selection.");
break;
}
}
}
输入 1,则示例输出为:
Enter your selection (, , or ):
Current value is
如果输入 4,则输出为:
Enter your selection (, , or ):
Sorry, invalid selection.
// statements_continue.cs
using System;
class ContinueTest
{
static void Main()
{
for (int i = ; i <= ; i++)
{
if (i < )
{
continue;
}
Console.WriteLine(i);
}
}
}
goto identifier;
goto case constant-expression;
goto default;
// statements_goto_switch.cs
using System;
class SwitchTest
{
static void Main()
{
Console.WriteLine("Coffee sizes: 1=Small 2=Medium 3=Large");
Console.Write("Please enter your selection: ");
string s = Console.ReadLine();
int n = int.Parse(s);
int cost = ;
switch (n)
{
case :
cost += ;
break;
case :
cost += ;
goto case ;
case :
cost += ;
goto case ;
default:
Console.WriteLine("Invalid selection.");
break;
}
if (cost != )
{
Console.WriteLine("Please insert {0} cents.", cost);
}
Console.WriteLine("Thank you for your business.");
}
}
Coffee sizes: =Small =Medium =Large
Please enter your selection:
Please insert cents.
Thank you for your business.
// statements_goto.cs
// Nested search loops
using System;
public class GotoTest1
{
static void Main()
{
int x = , y = ;
int count = ;
string[,] array = new string[x, y]; // Initialize the array:
for (int i = ; i < x; i++) for (int j = ; j < y; j++)
array[i, j] = (++count).ToString(); // Read input:
Console.Write("Enter the number to search for: "); // Input a string:
string myNumber = Console.ReadLine(); // Search:
for (int i = ; i < x; i++)
{
for (int j = ; j < y; j++)
{
if (array[i, j].Equals(myNumber))
{
goto Found;
}
}
} Console.WriteLine("The number {0} was not found.", myNumber);
goto Finish; Found:
Console.WriteLine("The number {0} is found.", myNumber); Finish:
Console.WriteLine("End of search.");
}
}
如果输入 44,则示例输出:
Enter the number to search for:
The number is found.
End of search.
(四) return 语句
return 语句终止所在方法的执行,并将程序的控制返回给调用它的方法。它还可以返回一个可选值。如果方法为 void 类型,可以省略 return 语句。return语句的形式如下:
return [expression];
其中:
expression 表示方法的返回值。当方法类型为 void 时不能使用 expression 参数。
示例:
在下面的示例中,方法 A() 以 double 值的形式返回变量 Area。
// statements_return.cs
using System;
class ReturnTest
{
static double CalculateArea(int r)
{
double area = r * r * Math.PI;
return area;
} static void Main()
{
int radius = ;
Console.WriteLine("The area is {0:0.00}", CalculateArea(radius));
}
}
输出:
The area is 78.54
基础系列(5)—— C#控制语句的更多相关文章
- JavaScript基础系列
JavaScript基础系列 JavaScript是一种基于对象和事件驱动的客户端脚本语言. JavaScript的注释 // 单行 /**/ 多行注释 JavaScript变量,函数名和操作符都是区 ...
- 基础系列(4)—— C#装箱和拆箱
一 装箱和拆箱的概念 装箱是将值类型转换为引用类型 : 拆箱是将引用类型转换为值类型 : 值类型:包括原类型(Sbyte.Byte.Short.Ushort.Int.Uint.Long.Ulong.C ...
- 基础系列(6)—— C#类和对象
一.类介绍 类(class)是C#类型中最基础的类型.类是一个数据结构,将状态(字段)和行为(方法和其他函数成员)组合在一个单元中.类提供了用于动态创建类实例的定义,也就是对象(objec ...
- 带你学够浪:Go语言基础系列 - 8分钟学控制流语句
★ 文章每周持续更新,原创不易,「三连」让更多人看到是对我最大的肯定.可以微信搜索公众号「 后端技术学堂 」第一时间阅读(一般比博客早更新一到两篇) " 对于一般的语言使用者来说 ,20% ...
- 带你学够浪:Go语言基础系列 - 8分钟学复合类型
★ 文章每周持续更新,原创不易,「三连」让更多人看到是对我最大的肯定.可以微信搜索公众号「 后端技术学堂 」第一时间阅读(一般比博客早更新一到两篇) " 对于一般的语言使用者来说 ,20% ...
- 【Basics of Entity Framework】【EF基础系列1】
EF自己包括看视频,看MSDN零零散散的学了一点皮毛,这次打算系统学习一下EF.我将会使用VS2012来学习这个EF基础系列. 现在看看EF的历史吧: EF版本 相关版本特性介绍 EF3.5 基于数据 ...
- C#基础系列——Attribute特性使用
前言:上篇 C#基础系列——反射笔记 总结了下反射得基础用法,这章我们来看看C#的另一个基础技术——特性. 1.什么是特性:就博主的理解,特性就是在类的类名称.属性.方法等上面加一个标记,使这些类.属 ...
- C#基础系列——小话泛型
前言:前面两章介绍了C#的两个常用技术:C#基础系列——反射笔记 和 C#基础系列——Attribute特性使用 .这一章来总结下C#泛型技术的使用.据博主的使用经历,觉得泛型也是为了重用而生的,并且 ...
- C#基础系列——委托实现简单设计模式
前言:上一篇介绍了下多线程的相关知识:C#基础系列——多线程的常见用法详解,里面就提到了委托变量.这篇简单介绍下委托的使用.当然啦,园子里面很多介绍委托的文章都会说道:委托和事件的概念就像一道坎,过了 ...
随机推荐
- Ubuntu 16.04 64位安装YouCompleteMe
之前记录在OneNote上感觉有点乱,而且不适合保存shell,这次重新安装又出问题了,干脆写篇博客记录. 从零开始 1.git(用来下载vim和相关插件) sudo apt-get install ...
- 遍历collection是否会出现重复遍历?
在处理一次线上问题时,需要遍历一张玩家信息表,看单个account是否存在多个entity.使用aid_playerid_dict建立aid到playerid的映射,遍历过程中,发现同一个aid会出现 ...
- PHP保存数组到数据库
数组是 PHP 开发中使用最多的数据类型之一,对于结构化的数据尤为重要. 很多时候我们需要把数组保存到数据库中,实现对结构化数据的直接存储和读取. 其中一个案例就是,对于 Form 提交的多选 che ...
- 微信下载app需要点击右上角在浏览器中打开下载的问题
很多朋友是不是遇到过这样的问题,自家的app通过微信推广没办法直接下载,而是需要通过一个遮罩层来提示用户下载. 点击下载按钮提示点击右上角在浏览器中打开 这样的方式下载一个app是不是需要点击下载按钮 ...
- 树莓3B+_apt-get update && apt-get upgrade
在Windows下安装软件,我们只需要有EXE文件,然后双击,下一步直接OK就可以了.但在LINUX下,不是这样的.每个LINUX的发行版,都会维护一个自己的软件仓库,我们常用的几乎所有软件都在这里面 ...
- SQL宽字节注入
0x00 概述 - 什么是宽字节注入? 宽字节注入就是因为gbk编码方式需要两个ascii码组合来解码,所以形象的叫做宽字节,这个作为了解即可 -宽字节注入的条件 1) 数据库查询设置为GBK编码 2 ...
- ImageMagick命令执行学习笔记(常见于图片预览处)
实验版本: ImageMagick版本:6.9.2 push graphic-context viewbox 0 0 640 480 fill 'url(https://"|whoami&q ...
- 解决$ go get google.golang.org/grpc上的包被墙的问题
今天get grpc包的时候 $ go get google.golang.org/grpc 发现拉不下来被墙了,在github.com上搜索grpc,clone到工程目录中,运行命令 go inst ...
- Asp.Net实现在线人数统计 (转)
原文件:http://blog.csdn.net/wxd_860825/article/details/4589292 利用Application对象和Session对象可以统计当前在线用户数量. 注 ...
- Java基础——JVM内存结构
推荐阅读:https://www.cnblogs.com/wangjzh/p/5258254.html 一.内存结构图 先导知识: 一个 Java 源程序文件,会被编译为字节码文件(以 class 为 ...