欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    C#语言知识标准规范5.0中文版.doc

    • 资源ID:2737921       资源大小:770.09KB        全文页数:575页
    • 资源格式: DOC        下载积分:30金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要30金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    C#语言知识标准规范5.0中文版.doc

    /C#语言规范版本5.0注意 1999-2012 Microsoft Corporation。保留所有权利。Microsoft、Windows、Visual Basic、Visual C# 和 Visual C+ 是 Microsoft Corporation 在美国和/或其他国家/地区的注册商标或商标。本文提及的其他产品和公司名称可能是其各自所有者的商标。/目录1. 介绍11.1 Hello world11.2 程序结构21.3 类型和变量31.4 表达式61.5 语句81.6 类和对象121.6.1 成员121.6.2 可访问性131.6.3 类型形参131.6.4 基类141.6.5 字段141.6.6 方法151.6.6.1 参数151.6.6.2 方法体和局部变量161.6.6.3 静态方法和实例方法171.6.6.4 虚方法、重写方法和抽象方法181.6.6.5 方法重载201.6.7 其他函数成员201.6.7.1 构造函数221.6.7.2 属性231.6.7.3 索引器231.6.7.4 事件241.6.7.5 运算符241.6.7.6 析构函数251.7 结构251.8 数组261.9 接口271.10 枚举281.11 委托291.12 特性302. 词法结构332.1 程序332.2 文法332.2.1 文法表示法332.2.2 词法文法342.2.3 句法文法342.3 语法分析342.3.1 行结束符352.3.2 注释352.3.3 空白362.4 标记372.4.1 Unicode 字符转义序列372.4.2 标识符382.4.3 关键字392.4.4 文本402.4.4.1 布尔值402.4.4.2 整数402.4.4.3 实数412.4.4.4 字符422.4.4.5 字符串432.4.4.6 null 文本452.4.5 运算符和标点符号452.5 预处理指令452.5.1 条件编译符号462.5.2 预处理表达式472.5.3 声明指令472.5.4 条件编译指令482.5.5 诊断指令512.5.6 区域指令512.5.7 行指令522.5.8 Pragma 指令522.5.8.1 Pragma warning523. 基本概念553.1 应用程序启动553.2 应用程序终止563.3 声明563.4 成员583.4.1 命名空间成员583.4.2 结构成员583.4.3 枚举成员593.4.4 类成员593.4.5 接口成员593.4.6 数组成员593.4.7 委托成员593.5 成员访问603.5.1 已声明可访问性603.5.2 可访问域603.5.3 实例成员的受保护访问633.5.4 可访问性约束643.6 签名和重载653.7 范围663.7.1 名称隐藏683.7.1.1 通过嵌套隐藏683.7.1.2 通过继承隐藏693.8 命名空间和类型名称703.8.1 完全限定名723.9 自动内存管理733.10 执行顺序754. 类型774.1 值类型774.1.1 System.ValueType 类型784.1.2 默认构造函数784.1.3 结构类型794.1.4 简单类型794.1.5 整型804.1.6 浮点型814.1.7 decimal 类型824.1.8 bool 类型824.1.9 枚举类型824.1.10 可以为 null 的类型824.2 引用类型834.2.1 类类型844.2.2 对象类型844.2.3 dynamic 类型844.2.4 string 类型844.2.5 接口类型854.2.6 数组类型854.2.7 委托类型854.3 装箱和拆箱854.3.1 装箱转换854.3.2 拆箱转换864.4 构造类型874.4.1 类型实参884.4.2 开放和封闭类型884.4.3 绑定和未绑定类型894.4.4 满足约束894.5 类型形参904.6 表达式树类型904.7 dynamic 类型915. 变量925.1 变量类别925.1.1 静态变量925.1.2 实例变量925.1.2.1 类中的实例变量925.1.2.2 结构中的实例变量935.1.3 数组元素935.1.4 值参数935.1.5 引用参数935.1.6 输出形参935.1.7 局部变量945.2 默认值945.3 明确赋值955.3.1 初始已赋值变量955.3.2 初始未赋值变量965.3.3 确定明确赋值的细则965.3.3.1 一般语句规则965.3.3.2 块语句、checked 和 unchecked 语句975.3.3.3 表达式语句975.3.3.4 声明语句975.3.3.5 if 语句975.3.3.6 switch 语句975.3.3.7 while 语句985.3.3.8 do 语句985.3.3.9 for 语句985.3.3.10 break、continue 和 goto 语句985.3.3.11 throw 语句995.3.3.12 return 语句995.3.3.13 try-catch 语句995.3.3.14 try-finally 语句995.3.3.15 try-catch-finally 语句1005.3.3.16 foreach 语句1005.3.3.17 using 语句1015.3.3.18 lock 语句1015.3.3.19 yield 语句1015.3.3.20 简单表达式的一般规则1015.3.3.21 带有嵌入表达式的表达式的一般规则1015.3.3.22 调用表达式和对象创建表达式1025.3.3.23 简单赋值表达式1025.3.3.24 && 表达式1025.3.3.25 | 表达式1035.3.3.26 !表达式1045.3.3.27 ? 表达式1045.3.3.28 ?: 表达式1055.3.3.29 匿名函数1055.4 变量引用1065.5 变量引用的原子性1066. 转换1076.1 隐式转换1076.1.1 标识转换1086.1.2 隐式数值转换1086.1.3 隐式枚举转换1086.1.4 可以为 null 的隐式转换1086.1.5 null 文本转换1096.1.6 隐式引用转换1096.1.7 装箱转换1096.1.8 隐式动态转换1106.1.9 隐式常量表达式转换1106.1.10 涉及类型形参的隐式转换1106.1.11 用户定义的隐式转换1116.1.12 匿名函数转换和方法组转换1116.2 显式转换1116.2.1 显式数值转换1126.2.2 显式枚举转换1136.2.3 可以为 null 的显式转换1136.2.4 显式引用转换1146.2.5 拆箱转换1156.2.6 显式动态转换1156.2.7 涉及类型参数的显式转换1166.2.8 用户定义的显式转换1176.3 标准转换1176.3.1 标准隐式转换1176.3.2 标准显式转换1176.4 用户定义的转换1176.4.1 允许的用户定义转换1176.4.2 提升转换运算符1186.4.3 用户定义转换的计算1186.4.4 用户定义的隐式转换1196.4.5 用户定义的显式转换1196.5 匿名函数转换1206.5.1 匿名函数转换为委托类型的计算1226.5.2 匿名函数转换为表达式树类型的计算1226.5.3 实现示例1226.6 方法组转换1257. 表达式1277.1 表达式的分类1277.1.1 表达式的值1287.2 静态和动态绑定1287.2.1 绑定时间1297.2.2 动态绑定1297.2.3 构成表达式的类型1297.3 运算符1297.3.1 运算符的优先级和顺序关联性1307.3.2 运算符重载1317.3.3 一元运算符重载决策1327.3.4 二元运算符重载决策1327.3.5 候选用户定义运算符1327.3.6 数值提升1337.3.6.1 一元数值提升1337.3.6.2 二元数值提升1337.3.7 提升运算符1347.4 成员查找1357.4.1 基类型1367.5 函数成员1367.5.1 实参列表1387.5.1.1 对应形参1397.5.1.2 实参列表的运行时计算1407.5.2 类型推断1417.5.2.1 第一阶段1427.5.2.2 第二阶段1427.5.2.3 输入类型1437.5.2.4 输出类型1437.5.2.5 依赖1437.5.2.6 输出类型推断1437.5.2.7 参数类型显式推断1437.5.2.8 精确推断1437.5.2.9 下限推断1437.5.2.10 上限推断1447.5.2.11 固定1457.5.2.12 推断返回类型1457.5.2.13 方法组转换的类型推断1467.5.2.14 查找一组表达式的最通用类型1477.5.3 重载决策1477.5.3.1 适用函数成员1477.5.3.2 更好的函数成员1487.5.3.3 表达式的更佳转换1497.5.3.4 类型的更佳转换1497.5.3.5 更佳转换目标1497.5.3.6 泛型类中的重载1507.5.4 动态重载决策的编译时检查1507.5.5 函数成员调用1517.5.5.1 已装箱实例上的调用1527.6 基本表达式1527.6.1 文本1537.6.2 简单名称1537.6.2.1 块中的固定含义1547.6.3 带括号的表达式1557.6.4 成员访问1557.6.4.1 相同的简单名称和类型名称1577.6.4.2 语法多义性1577.6.5 调用表达式1587.6.5.1 方法调用1587.6.5.2 扩展方法调用1597.6.5.3 委托调用1627.6.6 元素访问1627.6.6.1 数组访问1627.6.6.2 索引器访问1637.6.7 this 访问1637.6.8 基访问1647.6.9 后缀增量和后缀减量运算符1657.6.10 new 运算符1667.6.10.1 对象创建表达式1667.6.10.2 对象初始值设定项1677.6.10.3 集合初始值设定项1697.6.10.4 数组创建表达式1707.6.10.5 委托创建表达式1727.6.10.6 匿名对象创建表达式1737.6.11 typeof 运算符1757.6.12 checked 和 unchecked 运算符1767.6.13 默认值表达式1797.6.14 匿名方法表达式1797.7 一元运算符1797.7.1 一元加运算符1797.7.2 一元减运算符1807.7.3 逻辑否定运算符1807.7.4 按位求补运算符1807.7.5 前缀增量和减量运算符1817.7.6 强制转换表达式1817.7.7 Await 表达式1827.7.7.1 可等待的表达式1837.7.7.2 await 表达式的分类1837.7.7.3 await 表达式的运行时计算1837.8 算术运算符1847.8.1 乘法运算符1847.8.2 除法运算符1857.8.3 余数运算符1867.8.4 加法运算符1877.8.5 减法运算符1897.9 移位运算符1907.10 关系和类型测试运算符1927.10.1 整数比较运算符1927.10.2 浮点比较运算符1937.10.3 小数比较运算符1947.10.4 布尔相等运算符1947.10.5 枚举比较运算符1947.10.6 引用类型相等运算符1947.10.7 字符串相等运算符1967.10.8 委托相等运算符1967.10.9 相等运算符和 null1977.10.10 is 运算符1977.10.11 as 运算符1977.11 逻辑运算符1987.11.1 整数逻辑运算符1997.11.2 枚举逻辑运算符1997.11.3 布尔逻辑运算符1997.11.4 可以为 null 的布尔逻辑运算符2007.12 条件逻辑运算符2007.12.1 布尔条件逻辑运算符2017.12.2 用户定义的条件逻辑运算符2017.13 空合并运算符2017.14 条件运算符2027.15 匿名函数表达式2037.15.1 匿名函数签名2057.15.2 匿名函数体2057.15.3 重载决策2057.15.4 匿名函数与动态绑定2067.15.5 外层变量2067.15.5.1 捕获的外层变量2067.15.5.2 局部变量实例化2077.15.6 匿名函数表达式计算2097.16 查询表达式2097.16.1 查询表达式的多义性2117.16.2 查询表达式转换2117.16.2.1 带继续符的 select 和 groupby 子句2117.16.2.2 显式范围变量类型2127.16.2.3 退化查询表达式2127.16.2.4 from、let、where、join 和 orderby 子句2137.16.2.5 select 子句2167.16.2.6 Groupby 子句2177.16.2.7 透明标识符2177.16.3 查询表达式模式2187.17 赋值运算符2197.17.1 简单赋值2207.17.2 复合赋值2227.17.3 事件赋值2237.18 表达式2237.19 常量表达式2237.20 布尔表达式2258. 语句2278.1 结束点和可到达性2278.2 块2298.2.1 语句列表2298.3 空语句2308.4 标记语句2308.5 声明语句2318.5.1 局部变量声明2318.5.2 局部常量声明2328.6 表达式语句2338.7 选择语句2338.7.1 if 语句2338.7.2 switch 语句2348.8 迭代语句2378.8.1 while 语句2378.8.2 do 语句2388.8.3 for 语句2388.8.4 foreach 语句2398.9 跳转语句2428.9.1 break 语句2438.9.2 continue 语句2448.9.3 goto 语句2448.9.4 return 语句2458.9.5 throw 语句2468.10 try 语句2478.11 checked 语句和 unchecked 语句2508.12 lock 语句2508.13 using 语句2518.14 yield 语句2539. 命名空间2559.1 编译单元2559.2 命名空间声明2559.3 Extern 别名2569.4 using 指令2579.4.1 using 别名指令2589.4.2 Using 命名空间指令2609.5 命名空间成员2629.6 类型声明2629.7 命名空间别名限定符2639.7.1 别名的唯一性26410. 类26510.1 类声明26510.1.1 类修饰符26510.1.1.1 抽象类26610.1.1.2 密封类26610.1.1.3 静态类26610.1.2 分部修饰符26710.1.3 类型参数26710.1.4 类基本规范26710.1.4.1 基类26810.1.4.2 接口实现26910.1.5 类型形参约束27010.1.6 类体27310.2 分部类型27410.2.1 特性27410.2.2 修饰符27410.2.3 类型形参和约束27510.2.4 基类27510.2.5 基接口27510.2.6 成员27610.2.7 分部方法27610.2.8 名称绑定27810.3 类成员27910.3.1 实例类型28010.3.2 构造类型的成员28010.3.3 继承28110.3.4 new 修饰符28210.3.5 访问修饰符28210.3.6 构成类型28210.3.7 静态成员和实例成员28210.3.8 嵌套类型28310.3.8.1 完全限定名28410.3.8.2 已声明可访问性28410.3.8.3 隐藏28410.3.8.4 this 访问28510.3.8.5 对包含类型的私有和受保护成员的访问28610.3.8.6 泛型类中的嵌套类型28710.3.9 保留成员名称28710.3.9.1 为属性保留的成员名称28810.3.9.2 为事件保留的成员名称28810.3.9.3 为索引器保留的成员名称28810.3.9.4 为析构函数保留的成员名称28910.4 常量28910.5 字段29010.5.1 静态字段和实例字段29110.5.2 只读字段29210.5.2.1 对常量使用静态只读字段29210.5.2.2 常量和静态只读字段的版本控制29310.5.3 可变字段29310.5.4 字段初始化29410.5.5 变量初始值设定项29510.5.5.1 静态字段初始化29610.5.5.2 实例字段初始化29710.6 方法29710.6.1 方法形参29910.6.1.1 值参数30110.6.1.2 引用参数30110.6.1.3 输出形参30210.6.1.4 形参数组30310.6.2 静态方法和实例方法30510.6.3 虚方法30510.6.4 重写方法30710.6.5 密封方法30910.6.6 抽象方法31010.6.7 外部方法31110.6.8 分部方法31110.6.9 扩展方法31210.6.10 方法体31210.6.11 方法重载31310.7 属性31310.7.1 静态属性和实例属性31410.7.2 访问器31410.7.3 自动实现的属性31910.7.4 可访问性32010.7.5 虚、密封、重写和抽象访问器32110.8 事件32310.8.1 类似字段的事件32410.8.2 事件访问器32610.8.3 静态事件和实例事件32710.8.4 虚、密封、重写和抽象访问器32710.9 索引器32810.9.1 索引器重载33110.10 运算符33110.10.1 一元运算符33310.10.2 二元运算符33310.10.3 转换运算符33410.11 实例构造函数33610.11.1 构造函数初始值设定项33710.11.2 实例变量初始值设定项33810.11.3 构造函数执行33810.11.4 默认构造函数34010.11.5 私有构造函数34010.11.6 可选的实例构造函数形参34110.12 静态构造函数34110.13 析构函数34310.14 迭代器34510.14.1 枚举器接口34510.14.2 可枚举接口34510.14.3 产生类型34510.14.4 枚举器对象34510.14.4.1 MoveNext 方法34610.14.4.2 Current 属性34710.14.4.3 Dispose 方法34710.14.5 可枚举对象34710.14.5.1 GetEnumerator 方法34810.14.6 实现示例34810.15 异步函数35310.15.1 返回任务的异步函数计算35410.15.2 返回 void 的异步函数计算35411. 结构35511.1 结构声明35511.1.1 结构修饰符35511.1.2 分部修饰符35511.1.3 结构接口35611.1.4 结构体35611.2 结构成员35611.3 类和结构的区别35611.3.1 值语义35711.3.2 继承35711.3.3 赋值35811.3.4 默认值35811.3.5 装箱和拆箱35811.3.6 this 的含义36011.3.7 字段初始值设定项36011.3.8 构造函数36011.3.9 析构函数36111.3.10 静态构造函数36111.4 结构示例36211.4.1 数据库整数类型36211.4.2 数据库布尔类型36312. 数组36712.1 数组类型36712.1.1 System.Array 类型36812.1.2 数组和泛型 IList 接口36812.2 数组创建36812.3 数组元素访问36912.4 数组成员36912.5 数组协变36912.6 数组初始值设定项36913. 接口37113.1 接口声明37113.1.1 接口修饰符37113.1.2 分部修饰符37113.1.3 Variant 类型形参列表37213.1.3.1 变化安全性37213.1.3.2 变化转换37313.1.4 基接口37313.1.5 接口体37413.2 接口成员37413.2.1 接口方法37513.2.2 接口属性37513.2.3 接口事件37613.2.4 接口索引器37613.2.5 接口成员访问37613.3 完全限定接口成员名37813.4 接口实现37813.4.1 显式接口成员实现37913.4.2 所实现接口的唯一性38113.4.3 泛型方法实现38213.4.4 接口映射38313.4.5 接口实现继承38513.4.6 接口重新实现38713.4.7 抽象类和接口38814. 枚举38914.1 枚举声明38914.2 枚举修饰符38914.3 枚举成员39014.4 System.Enum 类型39214.5 枚举值和运算39215. 委托39315.1 委托声明39315.2 委托兼容性39515.3 委托实例化39515.4 委托调用39616. 异常39916.1 导致异常的原因39916.2 System.Exception 类39916.3 异常的处理方式39916.4 公共异常类40017. 特性40117.1 特性类40117.1.1 特性用法40117.1.2 定位和命名参数40217.1.3 特性参数类型40317.2 特性说明40317.3 特性实例40817.3.1 特性的编译40817.3.2 特性实例的运行时检索40917.4 保留特性40917.4.1 AttributeUsage 特性40917.4.2 Conditional 特性41017.4.2.1 条件方法41017.4.2.2 条件特性类41217.4.3 Obsolete 特性41317.4.4 调用方信息特性41417.4.4.1 CallerLineNumber 特性41517.4.4.2 CallerFilePath 特性41517.4.4.3 CallerMemberName 特性41517.5 互操作的特性41517.5.1 与 COM 和 Win32 组件的互操作41617.5.2 与其他 .NET 语言的互操作41617.5.2.1 IndexerName 特性41618. 不安全代码41718.1 不安全上下文41718.2 指针类型41918.3 固定和可移动变量42218.4 指针转换42218.4.1 指针数组42318.5 表达式中的指针42418.5.1 指针间接寻址42518.5.2 指针成员访问42518.5.3 指针元素访问42618.5.4 address-of 运算符42618.5.5 指针递增和递减42718.5.6 指针算术运算42718.5.7 指针比较42818.5.8 sizeof 运算符42918.6 fixed 语句42918.7 固定大小缓冲区43318.7.1 固定大小缓冲区的声明43318.7.2 表达式中的固定大小缓冲区43418.7.3 明确赋值 检查43518.8 堆栈分配43518.9 动态内存分配436A. 文档注释439A.1 介绍439A.2 建议的标记440A.2.1 <c>441A.2.2 <code>441A.2.3 <example>442A.2.4 <exception>442A.2.5 <include>443A.2.6 <list>444A.2.7 <para>444A.2.8 <param>445A.2.9 <paramref>445A.2.10 <permission>446A.2.11 <remark>446A.2.12 <returns>446A.2.13 <see>447A.2.14 <seealso>447A.2.15 <summary>448A.2.16 <value>448A.2.17 <typeparam>448A.2.18 <typeparamref>449A.3 处理文档文件449A.3.1 ID 字符串格式449A.3.2 ID 字符串示例450A.4 示例454A.4.1 C# 源代码454A.4.2 生成的 XML456B. 语法460B.1 词法文法460B.1.1 行结束符460B.1.2 注释460B.1.3 空白461B.1.4 标记461B.1.5 Unicode 字符转义序列461B.1.6 标识符461B.1.7 关键字463B.1.8 文本463B.1.9 运算符和标点符号465B.1.10 预处理指令465B.2 句法文法468B.2.1 基本概念468B.2.2 类型468B.2.3 变量469B.2.4 表达式469B.2.5 语句476B.2.6 命名空间480B.2.7 类480B.2.8 结构488B.2.9 数组488B.2.10 接口489B.2.11 枚举490B.2.12 委托491B.2.13 特性491B.3 不安全代码的语法扩展492C. 参考资料497/1. 介绍C#(读作“See Sharp”)是一种简洁、现代、面向对象且类型安全的编程语言。C# 起源于 C 语言家族,因此,对于 C、C+ 和 Java 程序员,可以很快熟悉这种新的语言。C# 已经分别由 ECMA International 和 ISO/IEC 组织接受并确立了标准,它们分别是 ECMA-334 标准和 ISO/IEC 23270 标准。Microsoft 用于 .NET Framework 的 C# 编译器就是根据这两个标准实现的。C# 是面向对象的语言,然而 C# 进一步提供了对面向组件 (component-oriented) 编程的支持。现代软件设计日益依赖于自包含和自描述功能包形式的软件组件。这种组件的关键在于,它们通过属性、方法和事件来提供编程模型;它们具有提供了关于组件的声明性信息的特性;同时,它们还编入了自己的文档。C# 提供的语言构造直接支持这些概念,这使得 C# 语言自然而然成为创建和使用软件组件之选。有助于构造健壮、持久的应用程序的若干 C# 特性:垃圾回收 (Garbage collection) 将自动回收不再使用的对象所占用的内存;异常处理 (exception handling) 提供了结构化和可扩展的错误检测和恢复方法;类型安全 (type-safe) 的语言设计则避免了读取未初始化的变量、数组索引超出边界或执行未经检查的类型强制转换等情形。C# 具有一个同一类型系统 (unified type system)。所有 C# 类型(包括诸如 int 和 double 之类的基元类型)都继承于单个根类型:object。因此,所有类型都共享一组通用操作,并且任何类型的值都能够以一致的方式进行存储、传递和操作。此外,C# 同时支持用户定义的引用类型和值类型,既允许对象的动态分配,也允许轻量结构的内联存储。为了确保 C# 程序和库能够以兼容的方式逐步演进,C# 的设计中充分强调了版本控制 (versioning)。许多编程语言不太重视这一点,导致采用那些语言编写的程序常常因为其所依赖的库的更新而无法正常工作。C# 的设计在某些方面直接考虑到版本控制的需要,其中包括单独使用的 virtual 和 override 修饰符、方法重载决策规则以及对显式接口成员声明的支持。本章的其余部分将描述 C# 语言的基本特征。尽管后面的章节会更为详尽,有时甚至逻辑缜密地对规则和例外情况进行描述,但本章的描述力求简洁明了,因而难免会牺牲完整性。这样做是为了向读者提供关于该语言的概貌,一方面使读者能尽快上手编写程序,另一方面为阅读后续章节提供指导。1.1 Hello world按照约定俗成的惯例,我们先从“Hello, World”程序着手介绍这一编程语言。下面是它的 C# 程序:using System;class Hellostatic void Main() Console.WriteLine("Hello, World");C# 源文件的扩展名通常是 .cs。假定“Hello, World”程序存储在文件 hello.cs 中,可以使用下面的命令行调用 Microsoft C# 编译器编译这个程序:csc hello.cs编译后将生成一个名为 hello.exe 的可执行程序集。当此应用程序运行时,输出结果如下:Hello, World“Hello, World”程序的开头是一个 using 指令,它引用了 System 命名空间。命名空间提供了一种分层的方式来组织 C# 程序和库。命名空间中包含有类型及其他命名空间 例如,System 命名空间包含若干类型(如此程序中引用的 Console 类)以及若干其他命名空间(如 IO 和 Collections)。如果使用 using 指令引用了某一给定命名空间,就可以通过非限定方式使用作为该命名空间成员的类型。正是由于使用了 using 指令,该程序才可以采用 Console.WriteLine 这一简化形式代替 System.Console.WriteLine。“Hello, World”程序中声明的 Hello 类只有一个成员,即名为 Main 的方法。Main 方法是使用 static 修饰符声明的。实例方法可以使用关键字 this 来引用特定的封闭对象实例,而静态方法的操作不需要引用特定对象。按照惯例,名为 Main 的静态方法将作为程序的入口点。该程序的输出由 System 命名空间中的 Console 类的 WriteLine 方法产生。此类由 .NET Framework 类库提供,默认情况下,Microsoft C# 编译器自动引用该类库。注意,C# 语言本身没有单独的运行库。事实上,.NET Framework 就是 C# 运行库。1.2 程序结构C# 中的组织结构的关键概念是程序 (program)、命名空间 (namespace)、类型 (type)、成员 (member) 和程序集 (assembly)。C# 程序由一个或多个源文件组成。程序中声明类型,类型包含成员,并且可按命名空间进行组织。类和接口就是类型的示例。字段 (field)、方法、属性和事件是成员的示例。在编译 C# 程序时,它们被物理地打包为程序集。程序集通常具有文件扩展名 .exe 或 .dll,具体取决于它们是实现应用程序 (application) 还是实现库 (library)。下面的示例using System;namespace Acme.Collectionspublic class StackEntry top;public void Push(object data) top = new Entry(top, data);

    注意事项

    本文(C#语言知识标准规范5.0中文版.doc)为本站会员(一***)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开