结构是值类型:值类型在栈上分配空间;
  类是引用类型:引用类型在堆栈上分配空间;
  虽然结构与类的类型不一样,可是他们的基类型都是对象(object),c#中所有类型的基类型都是object;
  虽然结构的初始化也使用了new 操作符,可是结构对象依然分配在栈上而不是堆上,如果不使用“新建”(new),那么在初始化所有字段之前,字段将保持未赋值状态,且对象不可用。
  结构:不能从另外一个结构或者类继承,本身也不能被继承,虽然结构没有明确的用sealed声明,可是结构是隐式的sealed;
  类:完全可扩展的,除非显示的声明sealed,否则类可以继承其他类和接口,自也能被继承虽然结构不能被继承,可是结构能够
  继承接口,方法和类继承接口一样;

结构:
  没有默认的构造函数,但是可以添加构造函数
      Structs cannot contain explicit parameterless constructors
    没有析构函数
  没有 abstract 和 sealed(因为不能继承)
  不能有protected 修饰符
  可以不使用new 初始化
  在结构中初始化实例字段是错误的
      public struct myStruct
      {
          public Int32 i = 0;  //error
      }
  类:
  有默认的构造函数
  有析构函数
  可以使用 abstract 和 sealed
  有protected 修饰符
  必须使用new 初始化

.NET中类(class)与结构(struct)的更多相关文章

  1. objective-C学习笔记(二)类 class 和 结构 struct

    Objective-C的类型 引用类型 类 class 指针 pointer 块 block 值类型 基础数值类型 结构 struct 枚举 enum 类型装饰 协议 protocol 类别 cate ...

  2. go语言中结构struct

    package main; import "fmt" //结构struct //定义Person结构 type Person struct { name string; age i ...

  3. 【转】结构struct 联合Union和枚举Enum的细节讨论

    结构struct 联合Union和枚举Enum的细节讨论 联合(Union)是一种构造数据类型,它提供了一种使不同类型数据类型成员之间共享存储空间的方法,同时可以实现不同类型数据成员之间的自动类型转换 ...

  4. 【Golang】Go 通过结构(struct) 实现接口(interface)

    一.通过结构(struct) 实现 接口(interface) 1.在了解iris框架的时候,经常看到有这样去写的使用一个空结构体作为接收器,来调用方法,有点好奇这样做有什么意义. 解释:在 Go 语 ...

  5. 结构struct

    1.结构变量 1)定义结构类型 struct student { char *name; int age; int score[3]; }; 2)定义结构变量 struct student stu1, ...

  6. 详说C#中的结构struct

    一.结构和类的区别 1.结构的级别和类一致,写在命名空间下面,可以定义字段.属性.方法.构造方法也可以通过关键字new创建对象. 2.结构中的字段不能赋初始值. 3.无参数的构造函数无论如何C#编译器 ...

  7. go基础系列:结构struct

    Go语言不是一门面向对象的语言,没有对象和继承,也没有面向对象的多态.重写相关特性. Go所拥有的是数据结构,它可以关联方法.Go也支持简单但高效的组合(Composition),请搜索面向对象和组合 ...

  8. c# 结构 struct

    结构是使用 struct 关键字定义的,与类相似,都表示可以包含数据成员和函数成员的数据结构. 一般情况下,我们很少使用结构,而且很多人也并不建议使用结构,但作为.NET Framework 一般型別 ...

  9. C#中结构struct的使用

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

随机推荐

  1. python 模块加载

    python 模块加载 本文主要介绍python模块加载的过程. module的组成 所有的module都是由对象和对象之间的关系组成. type和object python中所有的东西都是对象,分为 ...

  2. Unity3d使用经验总结 数据驱动篇

    我这里说的数据驱动,不是指某种框架,某种结构,或者某种编码方式. 我要说的,是一种开发方式. 大家都知道,U3D中,我们可以为某个对象编写一个脚本,然后将这个脚本挂在对象上,那这个对象就拥有了相应的能 ...

  3. [每天默写一个算法]KMP

    [每天默写一个算法]KMP 作业要求:默写String的KMP算法. KMP是经典的字符串匹配算法.复杂度为O(n+m) public static class StringKMP { /// < ...

  4. 虚拟化平台cloudstack(8)——从UI开始

    UI ucloudstack采用的是前后端分离的架构,就是说前端可以选择使用web.swing甚至其它的界面,都可以. 我们来看cloudstack的UI信息吧,所有的cloudstack的UI都在{ ...

  5. MFC:在OnInitDialog 里面关闭窗体

    解决步骤 在对应的dialogcpp 文件里面的在OnInitDialog函数里面,找到对应的位置,您需要结束窗体显示的地方.(感觉这是废话) 经过验证,使用EndDialog(IDCANCEL);/ ...

  6. ios 使用UINavagationController时,push,pop方法执行的一些方法

    (一)当创建某一个UIViewController B,并push到ViewController B时,B执行方方法的顺序如下: 1>viewDidLoad2>initWithNibNam ...

  7. EF架构~通过EF6的DbCommand拦截器来实现数据库读写分离~续~添加事务机制

    回到目录 上一讲中简单介绍了一个EF环境下通过DbCommand拦截器来实现SQLSERVER的读写分离,只是一个最简单的实现,而如果出现事务情况,还是会有一些问题的,因为在拦截器中我们手动开启了Co ...

  8. atitit。企业的价值观 员工第一 vs 客户第一.docx

    atitit.企业的价值观 员工第一 vs 客户第一.docx 1. 客户第一的说法是错误的,员工优先是正确的,理念与价值观1 1.1. 任何一个组织,应该组织成员优先级要比外部成员高才对1 1.2. ...

  9. [java]输入一个算术表达式输出结果

    动手有益. 输入一个表达式,没有括号,数字小于0-9之间,输出计算结果,所有的中间结果化为整形.例如:  输入:3+8×2/9-2  输出:2 /** * input a calculate stri ...

  10. SQLServer清空数据库中所有的表并且ID自动归0

    exec sp_MSforeachtable 'Truncate Table ?'