MSDN,C#2
一、语句
1.结束点和可达性(end points and reachability)
(1)每个语句都有结束点。按照直觉(in intuitive terms),结束点是紧跟在语句后面的那个位置。复合语句(composite statements ,也叫合成语句,即包含嵌入语句的语句)的执行规则规定了(执行)控制到达一个嵌入语句的结束点时所采取的措施(action)。例如,当控制到达块中某个语句的结束点时,控制就转到该块中的下一个语句。
(2)如果语句能够通过执行(遂可能)到达某个语句,则称该语句是可到达的。相反,如果某个语句不可能被执行,则称该语句是不可到达的。
void F() { Console.WriteLine("reachable"); goto Label; Console.WriteLine("unreachable");//不可到达 Label: Console.WriteLine("reachable"); }
(3)如果编译器确定某个语句不可达,虽非错误,但会引发警告(warning)。
为确定某个特定的语句或结束点是否是可达的,编译器遵循为每个语句定义的可达性规则(reachability rules)进行流分析(flow analysis)。流分析考量(take into account)常量表达式的值(该值用来控制语句行为),而并不考虑非常量表达式的可能值。换句话说,从控制流分析(control flow)的角度,给定类型的非常量表达式(如变量)视为那个类型的任何可能值。
//常量表达式,Console.WriteLine非可达 void F() { const int i = 1; if (i == 2) Console.WriteLine("unreachable"); } //虽然事实上不可能执行,但因为是本地变量(表达式),Console.WriteLine可达 void F() { int i = 1; if (i == 2) Console.WriteLine("reachable"); }
(4) 函数成员中的块总是视为可达。通过依次测算块中每条语句的可达性规则,以确定任何给定语句的可达性。
void F(int x) {
Console.WriteLine("start");
if (x < 0) Console.WriteLine("negative"); }
第二个 Console.WriteLine
的可到达性按下面顺序确定:
~第一个 Console.WriteLine
表达式语句是可到达的,原因是 F
方法的块是可到达的。
~第一个 Console.WriteLine
表达式语句的结束点是可到达的,原因是该语句是可到达的。
~if
语句是可到达的,原因是第一个 Console.WriteLine
表达式语句的结束点是可到达的。
~第二个 Console.WriteLine
表达式语句是可到达的,原因是 if
语句的布尔表达式不是常数值 false
。
(5)如下两种情况,控制可到达某语句的结束点,会引起编译时错误:
1'由于 switch
语句不允许一个 switch 节穿越(fall through)到相邻的switch节,因此如果一个switch 节的语句列表的结束点可达,会引出编译时错误,表明该处遗漏掉一个break
语句。
2'如果计算求某值(value)的函数成员块的结束点可达,会引出编译时错误,表明该处遗漏了一个return
语句。
二、语句类型
local-constant-declaration ;
embedded-statement(嵌入语句):
statement-list statement
empty-statement:(空语句);
expression-statement:(表达式语句)
object-creation-expression
assignment
post-increment-expression
post-decrement-expression
pre-increment-expression
pre-decrement-expression
selection-statement:(选择语句)
switch-statement
iteration-statement(迭代语句)
do-statement
for-statement
foreach-statement
jump-statement(跳转语句):
continue-statement
goto-statement
return-statement
throw-statement
try-statement(try 语句)
checked-statement(checked 语句):
unchecked-statement(unchecked 语句)
using-statement(using 语句)
//下列的i将引发编译时错误,因为这时的语境要求嵌入语句而非语句 void F(bool b) { if (b) int i = 44; } //但如果i放在块内,则是合法的.
using命令提供用来“便利”名字空间使用(facilitate the use)。
using-alias-directive引入名字空间或类型的别名;
using-namespace-directive导入名字空间的类型成员;
四、类型声明
struct-declaration(结构声明)
interface-declaration(接口声明)
enum-declaration(枚举声明)
delegate-declaration(委托声明)
(2)类型声明能够作为顶级声明出现在编译单元中,或者作为成员声明出现在命名空间、类或结构内部;
(3)当类型 T
的类型声明作为编译单元中的顶级声明出现时,新声明的类型的完全限定名正好是 T
。当类型 T
的类型声明出现在命名空间、类或结构内时,新声明的类型的完全限定名是 N.T
,其中 N
是包含它的命名空间、类或结构的完全限定名;
(4)在类或结构内声明的类型称为嵌套类型(nested type);
(5)某个类型声明所允许使用的访问修饰符(access modifiers)及默认的访问(default access)取决于出现声明处的环境。
~在编译单元和命名空间中声明的类型可以具有public
或internal(默认)
访问属性。
~在类中声明的类型可以具有 public
、protected
internal
、protected
、internal
或 private
(默认)访问属性。
~在结构中声明的类型可以具有 public
、internal
或 private(默认)
访问属性。
发表评论
-
ZT,一篇好文
2010-05-03 10:33 999读读语言大牛们(其中有位是Anders)这篇文章,会很受益。( ... -
关于“匿名方法”与“lambda操作符”的实现
2010-03-24 22:29 871在<关于“回调”的实现>一文中,我们探讨了使用委托 ... -
effective hierarchy(二)之 函数合辑(2)
2009-09-16 21:29 727介绍: 本节我们来看看另外一种封装,构建件。构建件作为 ... -
effective hierarchy(二)之 函数合辑(1)
2009-08-19 14:53 781“暴露”阶段:值-> ... -
effective hierarchy(一)之 基本概念结束篇
2009-06-30 15:41 662一、函数/功能成员(fun ... -
effective hierarchy(一)之 基本概念(7)
2009-06-23 21:15 937以下可跳过: [立记保留:到现在为止,我满意的是认真的精神。 ... -
effective hierarchy(一)之 基本概念(6)
2009-06-21 00:34 949MSDN,C#2.0 转换(conversions) ... -
effective hierarchy(一)之 基本概念(5)
2009-06-18 22:16 715MSDN,C#2.0 变量基本点: 变量代表 ... -
effective hierarchy(一)之 基本概念(4)
2009-06-15 15:59 726MSDN,C#2.0: 一、名字空间和类型名称(nam ... -
effective hierarchy(一)之 基本概念(3)
2009-06-14 15:00 730MSDN,C#2.0: 一、签 ... -
effective hierarchy(一)之 基本概念(2)
2009-06-13 18:22 828MSDN:基本概念 一、 ... -
effective hierarchy(一) 之基本概念(1)
2009-06-11 09:37 778我告诫自己,不要忽略简单的东西,又要扎实。所以这一篇开始,专门 ... -
effective hierarchy(一)之 属性与索引器
2009-06-07 14:07 1149编程笺言:“优良的设计 ... -
effective hierarchy(一)之 从array说起(4)
2009-06-07 00:53 803回顾:上一节中,我们 ... -
effective hierarchy(一)之 从array说起(3)
2009-06-06 21:20 700回顾: 从上一节中,可以看出枚举的易用性对数组使用的启示意义 ... -
effective hierarchy(一)之 从array说起(2)
2009-06-06 09:34 691复习: 从上一节,可 ... -
effective hierarchy(一)之 从array说起(1)
2009-05-29 13:59 891MSDN(c#2.0): 数组的元义是 ... -
effective hierarchy(一)之 C#中的new
2009-05-27 23:21 840MSDN(c#2.0): 在msdn中,指出new的三种用法。 ...
相关推荐
在了解 IRQ hierarchy 的初始化及构建过程之前,需要先了解三个基本概念:IRQ、HWIRQ 和 GSI。 IRQ(Interrupt Request)是系统中的一种机制,允许外部设备请求 CPU 的注意,以便处理某些事件。IRQ 是一个抽象的...
Android 开发中,UI 分析工具 Hierarchy Viewer 是一个非常有用的工具,可以帮助开发者快速、方便地设计、调试和调整界面,提高用户的开发效率。本文将详细介绍如何使用 Hierarchy Viewer 工具在 Android 开发过程中...
Hierarchy PRO是一个高级的Hierarchy面板扩展,它提供了更多的自定义选项和便捷的功能。此插件可能包括但不限于以下特性: 1. **过滤与排序**:Hierarchy PRO允许用户根据需求筛选和排序场景中的游戏对象,比如按...
解决这个启动 View Hierarchy时的这个bug: hierarchy viewer unable to debug device
本篇文档将详细介绍如何为员工及其部门经理创建一个层次数据源(Hierarchy Extractor)。通过这个层次数据源,管理者可以方便地获取到他们直接下属的信息以及这些下属所负责或有权访问的数据。此文档适用于运行ECC 5.0...
Hierarchy Viewer是Android SDK中自带的一款强大的UI设计与检测工具。它位于Android SDK的`tools`目录下,文件名为`hierarchyviewer.bat`。对于Android开发者来说,这是一个不可或缺的工具,能够帮助他们在开发过程...
效果及使用方法:https://blog.csdn.net/qq_26318597/article/details/131373576 1.导入插件包 2.选中Hierarchy中的物体 3.右键选择“复制Hierarchy路径” 4.Ctrl + V 粘贴
#### 一、Hierarchy Viewer概览 Hierarchy Viewer是一款由Google提供的强大工具,专为Android开发者设计,旨在辅助界面设计、调试及优化工作流程。通过直观地展示应用UI的层级结构,它使得开发者能够轻松识别布局...
Unity是世界上最流行的游戏开发引擎之一,它为开发者提供了丰富的工具集来创建交互式3D和2D内容。在Unity中,Hierarchy面板是一个至关重要的组成部分,它显示了场景中的所有游戏对象及其层次结构。QHierarchy是一款...
Enhanced_Hierarchy_2.0_v2.4.5.unitypackage 最新版本哦 正版
Hierarchy PRO 2021 v2021.1u9
Unity是世界上最受欢迎的游戏开发引擎之一,它提供了丰富的工具和功能,让开发者能够创建高质量的2D和3D游戏。在Unity中,"层级编辑器"(Hierarchy)是至关重要的一个部分,它允许开发者组织和管理场景中的游戏对象...
在游戏开发领域,“演化你的游戏实体层级”(Evolve Your Hierarchy)这一概念强调了从传统的深度类层级结构向更灵活、可扩展的游戏实体组件化方法转变的重要性。这种方法不仅提高了代码的复用性与可维护性,还简化...
WPF Class Hierarchy
通过阅读和理解《VS2010 MFC Hierarchy Chart》的三个部分(MFC_Hierarchy_Chart1of3.pdf、MFC_Hierarchy_Chart2of3.pdf、MFC_Hierarchy_Chart3of3.pdf),开发者可以深入理解MFC的内部结构,从而更好地利用MFC开发...
Hierarchy2 v1.3.10.0
在这个名为“前端项目-d3-hierarchy.zip”的压缩包中,包含了一个使用D3.js库实现的层次数据可视化布局算法。D3.js(Data-Driven Documents)是一个强大的JavaScript库,专为创建动态、交互式的SVG、Canvas或WebGL...
网络列表可以包含基本元件、元件库中的模型以及用户定义的函数。 4. **元件库(Component Libraries)**:ADS提供丰富的内置元件库,包括模拟、数字和射频元件。设计师可以自定义库,创建专用的元件模型以满足特定...