静态构造函数.docx

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
静态构造函数

类中的static成员:一、出现原因及作用:  1、需要在一个类的各个对象间交互,即需要一个数据对象为整个类而非某个对象服务。  2、同时又力求不破坏类的封装性,即要求此成员隐藏在类的内部,对外不可见。  类的static成员满足了上述的要求,因为它具有如下特征:有独立的存储区,属于整个类。二、注意:  1、对于静态的数据成员,连接器会保证它拥有一个单一的外部定义。静态数据成员按定义出现的先后顺序依次初始化,注意静态成员嵌套时,要保证所嵌套的成员已经初始化了。消除时的顺序是初始化的反顺序。  2、类的静态成员函数是属于整个类而非类的对象,所以它没有this指针,这就导致了它仅能访问类的静态数据和静态成员函数。const 是c++中常用的类型修饰符,但我在工作中发现,许多人使用它仅仅是想当然尔,这样,有时也会用对,但在某些微妙的场合,可就没那么幸运了,究其实质原由,大多因为没有搞清本源。故在本篇中我将对const进行辨析。溯其本源,究其实质,希望能对大家理解const有所帮助,根据思维的承接关系,分为如下几个部分进行阐述。静态构造函数:1)用于对静态字段、只读字段等的初始化。       (2)添加static关键字,不能添加访问修饰符,因为静态构造函数都是私有的。    (3)类的静态构造函数在给定应用程序域中至多执行一次:只有创建类的实例或者引用类的任何静态成员才激发静态构造函数(4)静态构造函数是不可继承的,而且不能被直接调用。      (5)如果类中包含用来开始执行的 Main 方法,则该类的静态构造函数将在调用 Main 方法之前执行。  ??? 任何带有初始值设定项的静态字段,则在执行该类的静态构造函数时,先要按照文本顺序执行那些初始值设定项。 (6)如果没有编写静态构造函数,而这时类中包含带有初始值设定的静态字段,那么编译器会自动生成默认的静态构造函数。首先,静态构造函数不代表你不可以构造这个类。所谓静态构造函数就是在这个类第一次被使用之前首先进行初始化,其目的仅仅是做一些必要的初始化,例如静态变量。其次,如果你没有写一个非静态的构造函数,系统会帮你写一个出来的,也就是会默认构造一个出来的。此外,所有静态非常量字段实际上都会在静态构造函数里面进行赋值,所有非静态非常量字段实际上都会在非静态构造函数里面进行赋值。构造函数,静态构造函数与继承链在.net的类中,如果没有给类添加任何构造函数,编译器将会给类自动添加一个默认构造函数,它的作用就是初始化该类的字段为默认值。构造函数在继承链中的层次结构的执行顺序是由上到下进行,从System.Object开始到要实例化的类为止。1,静态构造函数在.net中静态构造函数的作用就是初始化类中的静态字段,静态构造函数不需访问修饰符,也不能带任何参数,可以与无参数的构造函数共存,同时静态构造函数是由.net运行时调用的,而不能在程序中调用,?静态构造函数自动被调用,不能被显式调用。虽然提供了许多约束条件,但是静态构造函数执行的确切时间和顺序是不确定的:一个类的静态构造函数在这个类的任何实例被创建前执行。一个类的静态构造函数在类的任何静态成员被引用前执行。一个类的静态构造函数在它的所有派生类的静态构造函数执行之后执行。一个类的静态构造函数从不会被执行一次以上。如果一些操作只希望被执行一次。这时候就可以考虑使用静态构造函数。当然如果设计的面向对象一些的话,那就是使用单件模式了。静态构造函数可以在第一次调用静态类的任何方法、属性时自动调用,所以在静态构造函数里抛出的异常捕获比较麻烦。可以参看下面的讨论:/Expert/topic/3274/3274910.xml??? 查看文章???关于静态构造函数2006年08月05日 星期六 16:56摘自C#高级编程李敏波译C#的一个新特征是也可以给类编写无参数的静态构造函数。这种构造函数只执行一次,而前面的构造函数是实例构造函数,只要创建类的对象,它都会执行。静态构造函数在C++和VB6中没有对应的函数。classMyClass{?? staticMyClass()?? {????? // initialization code?? }?? // rest of class definition}编写静态构造函数的一个原因是,类有一些静态字段或属性,需要在第一次使用类之前,从外部源中初始化这些静态字段和属性。.NET运行库没有确保静态构造函数什么时候执行,所以不要把代码放在某个特定的时刻(例如,加载程序集时)执行的静态构造函数中。也不能预计不同类的静态构造函数按照什么顺序执行。但是,可以确保静态构造函数至多运行一次,即在代码引用类之前执行。在C#中,静态构造函数通常在第一次调用类的成员之前执行。注意,静态构造函数没有定义访问修饰符,其他C#代码从

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档