C# 5.0 语言规范:局部变量声明与标准

需积分: 45 33 下载量 154 浏览量 更新于2024-08-07 收藏 4.67MB PDF 举报
"C#语言规范第五版中的声明语句与局部变量" 在C#编程语言中,声明语句是用于定义变量或常量的关键部分,它们在代码块中使用,但不能作为嵌入语句。根据提供的信息,我们专注于8.5章节,特别是关于局部变量的声明。 8.5.1局部变量声明 局部变量是在方法、构造函数或其他块级作用域内定义的变量。声明局部变量的语法如下: `local-variable-declaration: local-variable-type local-variable-declarators ;` `local-variable-type` 可以是明确的类型(如 `int`, `string` 等)或关键字 `var`,后者允许从初始值设定项推断类型。`local-variable-declarators` 是变量声明列表,每个声明包括一个 `identifier`(变量名),可选地跟一个等号(`=`)和 `local-variable-initializer`(变量的初始值,可以是表达式或数组初始化器)。 例如,声明一个整型变量 `i` 并赋值为10: ```csharp int i = 10; ``` 或者,使用 `var` 关键字进行隐式类型声明: ```csharp var count = 10; ``` 在后一种情况下,`count` 的类型会自动推断为 `int`,因为初始值是整数。 **隐式类型化局部变量声明(Implicitly Typed Local Variable Declarations)**有特定的规则: 1. 一个 `local-variable-declaration` 只能有一个 `local-variable-declarator`。 2. `local-variable-declarator` 必须包含 `local-variable-initializer`。 3. `local-variable-initializer` 必须是一个编译时可确定类型的表达式。 4. 表达式不能引用声明的变量自身。 因此,以下都是不合法的隐式类型化局部变量声明: ```csharp var x; // 错误,没有初始值设定项推断类型 var y = {1, 2, 3}; // 错误,数组初始化器不允许 var z = null; // 错误,null 没有类型 var u = x => x + 1; // 错误,匿名函数没有类型 var v = v++; // 错误,初始化器不能引用自身 ``` C#语言规范还涵盖了许多其他主题,包括程序结构、类型和变量、表达式、语句、类和对象、成员的可访问性、类型形参、继承、字段、方法、属性、索引器、事件、运算符、析构函数、结构、数组、接口、枚举、委托以及特性等。这个规范是C#开发人员的重要参考资料,提供了对语言特性和使用方式的详尽解释。