• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

c#使用new操作符构造新对象中做了一些什么(简单版)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

平时new算是使用非常频繁的一个关键字

这里只是描述 new object()   这种类型的作用

其他的暂时不涉及到,

本文的内容也比较简单,就列出了一些常用的流程

 

1.在第一次访问某个程序集的时候 (会加载对应的程序,例如需要new的对象在其他的dll里面)

  其实步骤一中有很多其他的内容,不过这里就不详细描述了,因为用的比较少

  如果找不到dll这个时候就会抛出异常

2.给所有静态成员赋值(static)

  在c#中赋值的顺序看起来和代码从上至下的顺序一模一样,不过不保证以后的.net版本和编译器也是这样,因此不要依赖于代码的先后关系

3.调用静态构造函数(..ctor)

  静态构造函数自始至终只调用一次. 如果如果要搞单例模式,放在这里初始化也是ok的,

  静态构造函数如果抛出异常....那么在本次应用程序的生命周期中,这个类的所有成员将都不能访问,一访问就会抛出异常System.TypeInitializationException.

  所以在静态构造函数中需要谨慎,最好是try catch,如果不是非常严重的错误的话.

  第2点中说的先后关系可以放在构造函数中顺序执行

4.如果这个类有父类,那么先调用父类的构造函数,(如果父类还有父类,那么继续调用父类的父类的.......)

  一路调用到最高级别,如果想调用父类的特定构造函数 可以使用base(.....)

5.初始化所有实例成员

6.如果存在this(...) 代表要先调用其他构造函数

7.最后开始调用构造函数

  一般来说构造函数要尽量的轻量级,

    

这里忽略了很多关于详细的内容,例如 静态构造函数(也就是类型构造函数) 中具体做了一些什么

 

PS1: 值类型也是可以   int i = new int();   不过实际上和int i=0; 没区别.当然你自己定义的值类型是可以弄一些有用的构造函数的

PS2: 这里也省略了很多关于内存分配

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C#编程(五十一)----------链表发布时间:2022-07-13
下一篇:
c#md5函数加密发布时间:2022-07-13
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap