C#指南,重温基础,展望远方!(5)C#语句
程序操作使用语句进行表示。 C# 支持几种不同的语句,其中许多语句是从嵌入语句的角度来定义的。
使用代码块,可以在允许编写一个语句的上下文中编写多个语句。 代码块是由一系列在分隔符 {
和 }
内编写的语句组成。
声明语句用于声明局部变量和常量。
1.表达式语句用于计算表达式。 可用作语句的表达式包括方法调用、使用 new
运算符的对象分配、使用 =
和复合赋值运算符的赋值、使用 ++
和 --
运算符和 await
表达式的递增和递减运算。
2.选择语句用于根据一些表达式的值从多个可能的语句中选择一个以供执行。 这一类语句包括 if
和 switch
语句。
3.迭代语句用于重复执行嵌入语句。 这一类语句包括 while
、do
、for
和 foreach
语句。
4.跳转语句用于转移控制权。 这一类语句包括 break
、continue
、goto
、throw
、return
和 yield
语句。
5.try
...catch
语句用于捕获在代码块执行期间发生的异常,try
...finally
语句用于指定始终执行的最终代码,无论异常发生与否。
6.checked
和 unchecked
语句用于控制整型类型算术运算和转换的溢出检查上下文。
7.lock
语句用于获取给定对象的相互排斥锁定,执行语句,然后解除锁定。
8.using
语句用于获取资源,执行语句,然后释放资源。
下面列出了可以使用的各种语句,以及每种语句的示例。
- 局部变量声明:
static void Declarations(string[] args)
{
int a;
int b = 2, c = 3;
a = 1;
Console.WriteLine(a + b + c);
}
- 局部常量声明:
static void ConstantDeclarations(string[] args)
{
const float pi = 3.1415927f;
const int r = 25;
Console.WriteLine(pi * r * r);
}
- 表达式语句:
static void Expressions(string[] args)
{
int i;
i = 123; // Expression statement
Console.WriteLine(i); // Expression statement
i++; // Expression statement
Console.WriteLine(i); // Expression statement
}
if
语句:
static void IfStatement(string[] args)
{
if (args.Length == 0)
{
Console.WriteLine("No arguments");
}
else
{
Console.WriteLine("One or more arguments");
}
}
switch
语句:
static void SwitchStatement(string[] args)
{
int n = args.Length;
switch (n)
{
case 0:
Console.WriteLine("No arguments");
break;
case 1:
Console.WriteLine("One argument");
break;
default:
Console.WriteLine($"{n} arguments");
break;
}
}
while
语句:
static void WhileStatement(string[] args)
{
int i = 0;
while (i < args.Length)
{
Console.WriteLine(args[i]);
i++;
}
}
do
语句:
static void DoStatement(string[] args)
{
string s;
do
{
s = Console.ReadLine();
Console.WriteLine(s);
} while (!string.IsNullOrEmpty(s));
}
for
语句:
static void ForStatement(string[] args)
{
for (int i = 0; i < args.Length; i++)
{
Console.WriteLine(args[i]);
}
}
foreach
语句:
static void ForEachStatement(string[] args)
{
foreach (string s in args)
{
Console.WriteLine(s);
}
}
break
语句:
static void BreakStatement(string[] args)
{
while (true)
{
string s = Console.ReadLine();
if (string.IsNullOrEmpty(s))
break;
Console.WriteLine(s);
}
}
continue
语句:
static void ContinueStatement(string[] args)
{
for (int i = 0; i < args.Length; i++)
{
if (args[i].StartsWith("/"))
continue;
Console.WriteLine(args[i]);
}
}
goto
语句:
static void GoToStatement(string[] args)
{
int i = 0;
goto check;
loop:
Console.WriteLine(args[i++]);
check:
if (i < args.Length)
goto loop;
}
return
语句:
static int Add(int a, int b)
{
return a + b;
}
static void ReturnStatement(string[] args)
{
Console.WriteLine(Add(1, 2));
return;
}
yield
语句:
static IEnumerable<int> Range(int from, int to)
{
for (int i = from; i < to; i++)
{
yield return i;
}
yield break;
}
static void YieldStatement(string[] args)
{
foreach (int i in Range(-10,10))
{
Console.WriteLine(i);
}
}
throw
和try
语句:
static double Divide(double x, double y)
{
if (y == 0)
throw new DivideByZeroException();
return x / y;
}
static void TryCatch(string[] args)
{
try
{
if (args.Length != 2)
{
throw new InvalidOperationException("Two numbers required");
}
double x = double.Parse(args[0]);
double y = double.Parse(args[1]);
Console.WriteLine(Divide(x, y));
}
catch (InvalidOperationException e)
{
Console.WriteLine(e.Message);
}
finally
{
Console.WriteLine("Good bye!");
}
}
checked
和unchecked
语句:
static void CheckedUnchecked(string[] args)
{
int x = int.MaxValue;
unchecked
{
Console.WriteLine(x + 1); // Overflow
}
checked
{
Console.WriteLine(x + 1); // Exception
}
}
lock
语句:
class Account
{
decimal balance;
private readonly object sync = new object();
public void Withdraw(decimal amount)
{
lock (sync)
{
if (amount > balance)
{
throw new Exception(
"Insufficient funds");
}
balance -= amount;
}
}
}
using
语句:
static void UsingStatement(string[] args)
{
using (TextWriter w = File.CreateText("test.txt"))
{
w.WriteLine("Line one");
w.WriteLine("Line two");
w.WriteLine("Line three");
}
}
C#指南,重温基础,展望远方!(5)C#语句的更多相关文章
- 【重温基础】17.WebAPI介绍
本文是 重温基础 系列文章的第十七篇. 今日感受:挑战. 系列目录: [复习资料]ES6/ES7/ES8/ES9资料整理(个人整理) [重温基础]1-14篇 [重温基础]15.JS对象介绍 [重温基础 ...
- chrome调试工具高级不完整使用指南(基础篇)
一.前言 本文记录的是作者在工作上面对chrome的一些使用和情况的分析分享,内容仅代表个人的观点.转发请注明出处(http://www.cnblogs.com/st-leslie/),谢谢合作 二. ...
- 【重温基础】16.JSON对象介绍
本文是 重温基础 系列文章的第十六篇. 今日感受:静. 系列目录: [复习资料]ES6/ES7/ES8/ES9资料整理(个人整理) [重温基础]1-14篇 [重温基础]15.JS对象介绍 本章节复习的 ...
- 【重温基础】15.JS对象介绍
从这篇文章开始,复习 MDN 中级教程 的内容了,在初级教程中,我和大家分享了一些比较简单基础的知识点,并放在我的 [Cute-JavaScript]系列文章中. 关于[Cute-JavaScript ...
- 【重温基础】11.Map和Set对象
本文是 重温基础 系列文章的第十一篇. 今日感受:注意身体,生病花钱又难受. 系列目录: [复习资料]ES6/ES7/ES8/ES9资料整理(个人整理) [重温基础]1.语法和数据类型 [重温基础]2 ...
- MySQL基础(二)——DDL语句
MySQL基础(二)--DDL语句 1.什么是DDL语句,以及DDL语句的作用 DDL语句时操作数据库对象的语句,这些操作包括create.drop.alter(创建.删除.修改)数据库对象. 2.基 ...
- 【Java基础】【04循环语句&方法】
04.01_Java语言基础(循环结构概述和for语句的格式及其使用) A:循环结构的分类 for,while,do...while B:循环结构for语句的格式: for(初始化表达式;条件表达式; ...
- 基础语法-判断结构if语句
基础语法-判断结构if语句 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.单分支语句 /** * 判断结构if单分支语句 * @author 尹正杰 * */ public c ...
- C#指南,重温基础,展望远方!(10)C#枚举
枚举类型是包含一组已命名常量的独特值类型. 需要定义包含一组离散值的类型时,可以定义枚举. 枚举使用一种整型值类型作为其基础存储, 并提供离散值的语义含义. 以下示例声明并使用名为“Color”的 e ...
- C#指南,重温基础,展望远方!(6)C#类和对象
类是最基本的 C# 类型. 类是一种数据结构,可在一个单元中就将状态(字段)和操作(方法和其他函数成员)结合起来. 类为动态创建的类实例(亦称为“对象”)提供了定义. 类支持继承和多形性,即派生类可以 ...
随机推荐
- 基于TCP通信的客户端断线重连
转载:http://www.cnblogs.com/networkcomms/p/4304362.html 源码下载 在CS程序中,断线重连应该是一个常见的功能. 此处的断线重连主要指的是服务器端因为 ...
- (转)DLL中导出函数的两种方式(dllexport与.def文件)
DLL中导出函数的两种方式(dllexport与.def文件)http://www.cnblogs.com/enterBeijingThreetimes/archive/2010/08/04/1792 ...
- NodeJS搭建HTTP服务器
NodeJS本来的用途是编写高性能Web服务器.我们首先在这里重复一下官方文档里的例子,使用NodeJS内置的http模块简单实现一个HTTP服务器. 新建server.js var http = r ...
- ocx控件打印之基础篇
Visual C++6.0是开发Windows应用程序的强大工具,但是要通过它实现程序的打印功能,一直是初学者的一个难点,经常有朋友询问如何在VC中实现打印功能,他们往往感到在MFC提供的框架内实 ...
- appium+python自动化50-生成定位对象模板templet(jinja2)
前言 每次自己写pageobject定位元素对象太繁琐,格式都差不多,只是换个定位方法,这种就可以才有模板的方式,批量生成pageobject定位元素对象的模板 python里面生成模板有两个模块可以 ...
- zabbix3.x安装出现“configure: error: Not found mysqlclient library”的解决办法
一.zabbix3.x安装出现“configure: error: Not found mysqlclient library”的解决办法 1.编译安装zabbix-server出现 编译时加参数:- ...
- scikit-learn入门学习记录
一加载示例数据集 from sklearn import datasets iris = datasets.load_iris() digits = datasets.load_digits() 数据 ...
- UVA 10441 - Catenyms(欧拉道路)
UVA 10441 - Catenyms 题目链接 题意:给定一些单词,求拼接起来,字典序最小的,注意这里的字典序为一个个单词比过去,并非一个个字母 思路:欧拉回路.利用并查集判联通,然后欧拉道路判定 ...
- 让Vs2013 完美支持EF6.1 Code First with Oracle 2015年12月24日更新
本文是对下文的补充,切勿以为我是全盘复制哦 连接: http://www.cnblogs.com/wlflovenet/p/4187455.html Normal 0 7.8 磅 0 2 false ...
- Hibernate关系映射(一) 基于外键的单向一对一
模拟用户和地址的映射关系,一个用户只有一个地址,用户知道地址,但是地址不知道用户.用户对地址的单向一对一映射. 一.建立实体类 Account.cs类 package com.lxit.entity; ...