一、类定义
    C#类的定义语法和C++类似,有一个区别就是:类定义结束时的分号。在C++中定义类结束后,必须在结束的大括号后加分号,否则将无法编译;而C#中,这个分号是可选的,即下面两个类定义是一样的:
class MyClass
{
    //Members
}
class MyClass
{
    //Members
};
二、访问修饰符
    C#有四种访问修饰符:public,protected,private,internal。前三种和C++的修饰符意义基本相同,而internal 的意义是此成员只在当前编译单元中可见,即internal修饰符根据代码所在位置而不是类层次结构的位置决定可见性。
    与C++不同,每个成员必须指定访问修饰符,否则默认为private。例如下面的C++类:
class MyClass
{
 public:
 int a;
 int b;
 int c;
 protected:
 int d;
 int e;
};
   在C#中实现相同目标,应该是:
Class MyClass
{
 public int a;
 public int b;
 public int c;
 protected int d;
 protected int e;
}
三、Main方法
  Main方法必须定义为静态(注意:Main,M大写)。Main方法可以由命令行参数,可以有返回值,也可以定义多个含有Main方法的类,只是编译时可以使用编译开关指定编译哪个Main方法。例如编译命令:
csc test.cs /main:Main1
四、构造函数
    构造函数形式与C++一样,不能有返回值。但在声名对象时是有区别的。
    例如:已定义类MyClass,
    在C++中: MyClass mc;//声明对象mc并在栈上分配空间
  MyClass mc = new MyClass();//在堆上声明mc
    而在C#中:MyClass mc;声明mc,并不分配空间,并没有真正实例化。要实例化可以如下:
  MyClass mc = new MyClass();
    或者:
  MyClass mc;
  mc = new MyClass();
五、静态成员
    和C++类似。
六、构造函数初始化表
    在构造函数初始化表中可以使用base(...)和this(...)来指定调用哪个类的哪个构造函数。
七、常量与只读字段
    关于常量:
    (1)常量成员的值是在编译时设置的;
    (2)常量成员的值必须指定;
    只读字段:常量必须事先指定,而有些量可能只是在运行时才能确定,而且一旦确定不能被改变,所以有readonly字段。
C#允许定义静态构造函数,用来初始化静态、只读等变量。
八、继承
    C#不允许多重继承,只能使用接口达到此目的。
九、C#的结构
    首先结构是值类型,而非引用类型。因此一旦声明就立刻分配空间。
    结构不可以有无参数的构造函数。