C# 6.0本质论(C#概述)

一、C#概述

1.1 编译

1.1.1 源代码文件

  • 拓展名
    • C#编译器可以允许为C#源代码文件使用任何文件拓展名,但一般使用.cs
  • 文件名
    • 文件名和类名可以不一致
      • 一个文件包含多个类
      • 一个类拆分到多个文件中

1.1.2 编译

  • 编译命令
    • 取决于C#编译器的实现,没有标准规定
  • 输出
    • 程序集 assembly
      • 可执行的应用程序文件 .exe
        • 与WIN32可执行程序完全不同
        • 需要依赖CLR才能运行
      • 库 .dll
        • 可以由另一个较大的程序引用的代码库
        • dynamic link library 动态链接库

1.2 C#语法基础

1.2.1 关键字

  • 编译器利用关键字来识别代码的结构和组织方式
  • 关键字提供了具体的语法

1.2.2 标识符

1.2.2.1 作用
  • 标识程序员编写代码的构造
  • 通过标识符可以引用所标识的构造
1.2.2.2 大小写风格
  • Pascal大小写
    • 每个单词的首字母大写
  • 驼峰大小写
    • 第一个字母小写,其他每个单词的首字母大写
1.2.2.3 @关键字
  • 关键字附加 ‘@’ 前缀可作为标识符使用

1.2.3 Main

  • C#程序从Main方法开始执行
  • 关键字static和方法名Main始终是程序必需的
    • static:启动程序的控制台不需要实例化类
  • 返回值类型可以是void或者int
    • int:非零表示程序执行出错
  • 要么不带参数,要么接收一个字符串数组作为参数
    • 接收命令行参数

1.2.4 空白

  • 空白
    一个或多个连续的格式字符(如制表符、空格和换行符)
  • 分号使C#编译器能忽略代码中的空白
  • 空白可以增强代码可读性

1.2.5 命名规范

  • 类名、方法名、属性
    • 使用Pascal大小写风格
  • 局部变量名
    • 驼峰大小写风格

1.3 注释

  • 带分隔符的注释
    • /* */
  • 单行注释
  • XML带分隔符的注释
    • 编译器会将注释放到单独的文本文件中
    • /** **/
  • XML单行注释
    • ///

1.4 应用程序接口

  • 一种数据类型的所有方法定义了这种类型的应用程序接口
  • 一个程序集包含的所有类型构成这个程序集的API

1.5 语言结构-CLI

1.5.1 公共中间语言

  • CIL(Common Intermediate Language)
    • 处理器不能直接解释程序集,处理器只能理解机器码
    • 程序集使用的是公共中间语言
  • 虚拟执行系统或运行时 VES(Virtual Execution System)
    • 即时编译JIT(Just-in-time compilation) 成机器码
    • 内存分配
    • 安全性
  • 不需要运行时的代码称为非托管代码或本地代码

1.5.2 公共语言基础结构

  • CLI(Common Language Infrastructure):
    • VES
    • CIL
    • CTS(Common Type System)公共类型系统
      • 为语言互操作性提供支持的类型系统
    • CLS(Common Language Specification)公共语言规范
      • 编写公共语言能访问的库的指导原则
    • 元数据
      • 描述数据的数据,使服务能被CLI识别
        • 程序和类库中数据类型的描述
        • 清单信息,包括与程序有关的数据以及依赖的库
        • 嵌入代码中的自定义特性,提供与特性所修饰的构造有关的信息
    • BCL(Base Class Library)基类库
      • 公共编程框架
  • CLI的功能
    • 语言互操作性
    • 类型安全
    • 代码访问安全性
    • 垃圾回收
    • 平台可移植性
    • BCL
      • 大型代码库,开发者不需要编写相应代码而直接使用其功能

1.6 C#和.net版本

在这里插入图片描述

1.7 CIL和ILDASM

  • ILDASM(IL Disassembler)
    • 将程序集(dll或exe)反汇编生成CIL代码
  • 可以将CIL反编译成C#
    • Red Gate Reflector
    • ILSpy
    • JustDecompile
    • dotPeek
    • CodeReflect
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值