02011001 语句
02011001 语句
1. 标签语句
1.1 标签语句是什么
- 标签语句有一个标识符后面跟着一个冒号再跟着一条语句组成。
Identifier : Statement
说明:
1. 标签语句的执行如同标签不存在一样,并仅执行Statement部分。
2. 给语句增加一个标签允许控制代码的其它部分转移到该语句。
3. 标签语句只允许用在块内部。
1.2 标签
- 标签有它们自己的声明空间,所以标签语句中的标识符可以是任何有效的标识符。
- 包括那些可能在重叠的作用域内声明的标识符,比如局部变量或参数名。
{
int xyz = 0; // 变量xyz
...
xyz : Console.WriteLine("Qinway"); // 标签xyz
}
说明:
1. 标签的标识符不能是关键字。
2. 标签不能在重叠范围内和另一个标签标识符相同。
1.3 标签语句的作用域
- 标签语句在其所在的块的外部不可见(或不可访问)。标签语句的作用域如下。
- 它声明所在的块。
- 任何嵌套在该块内部的块。
2. goto语句
- goto语句无条件的将控制转移到一个标签语句。
bool thingsAreFine;
while(true)
{
thingsAreFine = GetNuclearReactorCondition();
if(thingsAreFine)
Console.WriteLine("Things are fine.")
else
goto NotSoGood;
}
NotSoGood : Console.WriteLine("We have a problem.");
说明:
1. goto语句可以调到它所在块内的任何标签语句,或跳出到任何嵌套它的块内的标签语句。
2. goto语句不能跳入嵌套在其所在块内部的任何块。
注意,使用goto语句是非常不好的,因为它会导致若结构化的,难以调试和维护的代码。
3. using语句
- 某些类型的非托管对象有数量限制或很耗费系统资源,在代码使用完它们之后,尽快释放它们是非常重要的。using语句有助于简化该过程并确保这些资源被适当的处置。
- 资源是指实现了System.IDisposable接口的类或结构。简单理解接口就是为实现的函数成员的集合,类和结构可以选择去实现它们。
- 注意,using语句不同于using指令(如using System.Math)。
3.1 包资源的使用
- using语句帮助减少意外的运行时错误带来的潜在问题,它整洁的包装了资源的使用。使用using语句的类或者接口必须实现了System.IDisposable接口。
- 有两种形式的using语句。
3.2 using语句的第一种形式
using(ResourceType Identifier = Expression) Statement
↑ ↑
分配资源 使用资源
说明:
1. ()内的代码分配资源。
2. Statement使用资源的代码。
3. using语句隐式产生处理该资源的代码。
- 第一种形式的using语句执行如下任务。
- 分配资源。
- 把Statement放进try块。
- 创建资源的Dispose方法的调用,并把它放进finally块。
3.3 using语句第一种形式使用示例
using System; // using指令,不是using语句
using System.IO; // using指令,不是using语句
namespace Demo01
{
class Program
{
static void Main()
{
// using语句
using(TextWriter tw = File.CreateText("Lincoln.txt"))
{
tw.WriteLine("Four score and seven years ago, ...");
}
// using语句
using(TextReader tr = File.OpenText("Lincoln.txt"))
{
string InputString;
while (null != (InputString = tr.ReadLine()))
Console.WriteLine(InputString);
}
Console.ReadLine();
}
}
}
控制台输出:
Four score and seven years ago, ...
说明:
1. TextWriter类和TextReader类,这两个类都来自System.IO命名空间,这两个类都实现了IDisposable接口。
2. CreateText资源创建一个Lincoln.txt文本文件。
3. TextWriter资源打开一个Lincoln.txt文本文件,并向该文件中写入一行。
4. using语句确保调用对象的Dispose方法。
- using语句用于多种资源用法和示例
using(ResourceType Id1 = Expr1, Id2 = Expr2, ...) EmbeddedStatement
↑ ↑ ↑
只有一个类型 资源 资源
—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—
using System;
using System.IO;
namespace Demo01
{
class Program
{
static void Main()
{
using (TextWriter tw1 = File.CreateText("Lincoln.txt"),
tw2 = File.CreateText("Franklin.txt"))
{
tw1.WriteLine("Four score and seven years ago, ...");
tw2.WriteLine("Earrly to bed; Early to rise...");
}
using(TextReader tr1 = File.OpenText("Lincoln.txt"),
tr2 = File.OpenText("Franklin.txt"))
{
string InputString;
while (null != (InputString = tr1.ReadLine()))
Console.WriteLine(InputString);
while (null != (InputString = tr2.ReadLine()))
Console.WriteLine(InputString);
}
Console.ReadLine();
}
}
}
控制台输出:
Four score and seven years ago, ...
Earrly to bed; Early to rise...
- using语句的嵌套
using System;
using System.IO;
namespace Demo01
{
class Program
{
static void Main()
{
using (TextWriter tw1 = File.CreateText("Lincoln.txt"))
{
tw1.WriteLine("Four score and seven years ago, ...");
using (TextWriter tw2 = File.CreateText("Franklin.txt")) // 嵌套的using语句
tw2.WriteLine("Earrly to bed; Early to rise...");
}
using (TextReader tr1 = File.OpenText("Lincoln.txt"), // 多个资源的using语句
tr2 = File.OpenText("Franklin.txt"))
{
string InputString;
while (null != (InputString = tr1.ReadLine()))
Console.WriteLine(InputString);
while (null != (InputString = tr2.ReadLine()))
Console.WriteLine(InputString);
}
Console.ReadLine();
}
}
}
控制台输出:
Four score and seven years ago, ...
Earrly to bed; Early to rise...
3.4 using语句第二种形式使用示例
using(Expression) Statement
↑ ↑ ↑
关键字 资源 使用资源
说明:这种形式资源在using语句之前声明。
—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—
using System;
using System.IO;
namespace Demo01
{
class Program
{
static void Main()
{
TextWriter tw = File.CreateText("Lincoln.txt"); // 第二种使用形式,需要先声明资源
using (tw)
{
tw.WriteLine("Four score and seven years ago, ...");
}
using(TextReader tr = File.OpenText("Lincoln.txt")) // 第一种using语句使用形式。
{
string InputString;
while (null != (InputString = tr.ReadLine()))
Console.WriteLine(InputString);
}
Console.ReadLine();
}
}
}
控制台输出:
Four score and seven years ago, ...
结尾
书籍:C#图解教程
著:【美】丹尼尔 · 索利斯;卡尔 · 施罗坦博尔
译:窦衍森;姚琪琳
ISBN:978-7-115-51918-4
版次:第5版
发行:人民邮电出版社
※敬请购买正版书籍,侵删请联系85863947@qq.com※
※本文章为看书或查阅资料而总结的笔记,仅供参考,如有错误请留言指正,谢谢!※

浙公网安备 33010602011771号