﻿    C#是一种安全的、稳定的、简单的、优雅的，由C和C++衍生出来的面向对象的编程语言。它在继承C和C++强大功能的同时去掉了一些
它们的复杂特性（例如没有宏以及不允许多重继承）。C#综合了VB简单的可视化操作和C++的高运行效率，以其强大的操作能力、优雅的
语法风格、创新的语言特性和便捷的面向组件编程的支持成为.NET开发的首选语言。
 1.类型
  C# 中的类型一共分为两类，一类是值类型(Value Type)，一类是引用类型(Reference Type)。值类型和引用类型是以它们在计算
内存中是如何被分配的来划分的。值类型包括 结构和枚举，引用类型包括类、接口、委托 等。还有一种特殊的值类型，称为简单类型(Simple
Type)，比如 byte，int等，这些简单类型实际上是FCL类库类型的别名，比如声明一个int类型，实际上是声明一个System. Int32结构类型。
因此，在 Int32类型中定义的操作，都可以应用在int类型上，比如 “123.Equals(2)”。
  所有的值类型都隐式地继承自System.ValueType类型(注意System.ValueType本身是一个类类型)，System.ValueType和所有的引用类型都继承自
System.Object基类。不能显式地让结构继承一个类，因为C#不支持多重继承，而结构已经隐式继承自ValueType。
 2.类：
  C#结构体与类是不支持继承。
  类可以是抽象的和不可继承的：一个被申明成abstract的类不能被实例化，它只能被用做一个基类，C#关键字lock，它申明一个类不
是抽象的，但是它也不能被用做另一个类的基类界面：就象在Java中一样，一个界面是一组方法集合的抽象定义。当一个类或结构体实
现一个界面的时候，它必须实现这个界面中定义的所有方法。一个单一的类可以实现几个界面，也许以后会出现一些微妙的差别。
 2.C#命名空间
  命名空间的机制类似于文件目录的组织机制，是一种树状结构。例如using System中System就是命名空间。采用命名空间可以减
少代码量。
 3.委托
  委托是一种安全地封装方法的类型，它与C和C++ 中的函数指针类似。与C中的函数指针不同，委托是面向对象的、类型安全的和保险的。 委托的类型由委托的名称定义。委托实例独立于它所封装的方法的类，并且方法类型与委托的类型是兼容的。函数指针只能引用静态函数，而委托可以应用静态和实例方法。  
   首先需要声明一个委托，然后创建与委托相关联的方法，这里必须保证创建的方法和申明的委托变量类型、数目、以及返回值都是一样的，接着实例化一个委托对象，并将其与委托进行绑定，绑定的时候传入的参数必须是方法，而不是在方法中定义的变量。绑定后，就可以进行函数回调了。需要注意的是：在这个过程中，不能直接对与委托相关联方法中的参数直接定义，这样做是没有意义的。
  本工程中，在串口接受/发送数据的时候，为了防止被其他的操作影响，使用具有安全性的委托进行处理，可保证跨线程数据处理的正确性。
  4.布尔运算
  条件表达式的结果是布尔数据类型，布尔数据类型是这种语言中独立的一种数据类型，从布尔类型到其他类型没有直接的转换
过程，布尔常量true和false是C#中的关键字。错误处理：如Java中那样，通过抛出和捕捉异常对象来管理错误处理过程。
  5.接口
  是其他类型为确保它们支持某些操作而实现的引用类型。接口从不直接创建而且没有实际的表示形式，其他类型必须转换为接口类
型。一个接口定义一个协定。实现接口的类或结构必须遵守其协定。接口可以包含方法、属性、索引器和事件作为成员。
  6.强类型
  C#是一个强类型的语言，它的数值类型有一些可以进行隐式转换，其他的必须显式转换，隐式转换的类型只能是长度短的类型转
成长的类型，int可以转换成long、float、double、decimal，反之必须显式的转换。本工程中在求高低地址的时候，主要用到了强制byte转换。
  7.编译
  程序直接编译成标准的二进制可执行形式.但C#的源程序并不是被编译成二进制可执行形式，而是一种中间语言(IL)。
   
