1、结构是值类型,类则是引用类型。因此前者是放在栈(Stack)里,后者则仅仅是将引用地址存放在栈里,而具体的值则存放在堆(heap)里。 
      2、据第1点可以得出结论,那就是类对象通常用来传递大数据,而结构对象则用来传递小数据。 
      3、类可以被继承,而结构则不支持。 
      4、结构对象不能像类对象一样赋值为null。 
      5、结构不能像类一样定义析构器。 
      6、结构不能像类一样定义为抽象的。 
      7、在结构中不能重写方法,除非是object类型的如下方法: 
           Equals()  GetHashCode()   GetType()   ToString() 
          若要让结构具有多态特性,可以让其实现接口。 
      8、在类中定义的事件是线程安全的,而结构则不是。 
      9、结构总是具有一个默认的公共无参构造函数,但去不能像类一样定义私有的无参构造函数: 
      struct Me 
      { 
        private Me() // compile-time error 
        { 
        } 
    } 
      
    class Me 
    { 
        private Me() // runs Ok{ 
    } 
      10、类中的静态构造函数会被调用,而结构却不能。因此在结构中定义的静态构造函数,虽然可以编译       通过,但却没有价值: 
    struct myStructure 
    { 
        static myStructure()  
        { 
            Console.WriteLine("This is me a structure"); 
         } 
    } 
    class myClass 
    { 
        static myClass() 
        { 
            Console.WriteLine("This is me a class"); 
        } 
    } 
    class Program 
    { 
        static void Main(string[] args) 
        { 
           myStructure s = new myStructure();//Nothing happen 
           myClass c = new myClass();//Will out put This is me a class 
           Console.Read(); 
        } 
    } 
      11、结构不能像类一样定义volatile字段。volatile字段主要用于并发,它相当于方法体的lock。 
      12、可以对结构类型使用sizeof,对类则不行。 
      13、类的字段会被自动初始化为0/false/null,而结构则不能。 
      14、在结构中不能直接对字段初始化,而类则可以。 
    struct myStructure 
    { 
        public string x = 2;//Not allowed  
    } 
    class myClass 
    { 
        public string x = 2; //Allowed 
    } 
        15、结构和类对于System.Object.Equals()方法的体现是不相同的。 |