07 面向对象编程:静态成员与实例变量

07 面向对象编程:静态成员与实例变量

ID:34149082

大小:266.92 KB

页数:17页

时间:2019-03-03

07 面向对象编程:静态成员与实例变量_第1页
07 面向对象编程:静态成员与实例变量_第2页
07 面向对象编程:静态成员与实例变量_第3页
07 面向对象编程:静态成员与实例变量_第4页
07 面向对象编程:静态成员与实例变量_第5页
资源描述:

《07 面向对象编程:静态成员与实例变量》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第7章静态成员与实例变量NET在线培训学习资料更多学习材料,请到www.rzchina.net下载与C++等语言一样,C#语言也可以将类的成员定义为静态成员或者是实例变量。在默认情况下,每个成员都被定义为实例变量成员,这就意味着类需要为每个实例都建立一个副本。而在定义静态成员时,只存在此成员的一个副本,两者之间显出了明显的差别,尽管这种差别读者并不予以理会。7.1静态成员与实例成员静态成员一经定义之后,在整个类的生命周期内均会存在,也即在类被实例化之前也可以访问此成员,到类结束之后静态成员才会结束。为了说清楚这个问题,需要举一个Main()的例子。(1)打

2、开VisualStudio2005编辑器,单击“文件”菜单,选择“新建项目”命令,打开VisualStudio2005编辑器的创建向导,接着语言选择C#,选择“控制台应用程序”,如图7-1所示。图7-1静态成员的演示第5章类和对象·115·(2)修改生成的代码文件如下所示:usingSystem;usingSystem.Collections.Generic;usingSystem.Text;namespace@static{classProgram{publicstaticvoidPrintInstanceCount(){Console.WriteLin

3、e("[PrintInstanceCount]Nowthere{0}"+"{1}Instance{2}oftheInstCountclass",InstCount.instanceCount==1?"is":"are",InstCount.instanceCount,InstCount.instanceCount==1?"":"s");}staticvoidMain(string[]args){PrintInstanceCount();InstCountic;for(inti=0;i<2;i++){ic=newInstCount();Console.Wri

4、teLine("[Main]Instantiateda"+"{0}object...",ic.GetType());PrintInstanceCount();}}}classInstCount{staticpublicintinstanceCount;//instanceCount=0;publicInstCount(){instanceCount++;}}}(3)使用快捷键“Ctrl+F5”,执行程序,如图7-2所示。·116·图7-2静态成员程序的演示结果静态成员都是需要初始化的,如果没有初始化,编译器会自动将其赋值为默认的0,所以下面的代码是相同的:

5、Staticpublicinta;Staticpublicinta=0;7.1.1构造函数中的静态成员与实例变量在前面分别讨论了静态成员和实例成员的声明的定义,这里将结合构造函数讨论静态成员和实例成员变量的问题,首先需要说明的是,构造函数在调用类的基类的构造函数时,只能使用静态成员,因此下面的代码会遇到编译错误。ClassBaseClass{ProtectedBaseClass(){}}ClassDerivedClass:BaseClass{IntI;DerivedClass:Base(i){}}这里的整型i被错误的定义成私有变量,而不是static变量。

6、7.1.1.1静态成员的实例但是,在某些情况下,也需要向基类构造函数传递信息,但是事先并不知道这些信息是什么。在这第5章类和对象·117·个时候就需要静态方法来帮忙,并且在初始化列表中与base关键字一起使用,正如下面的程序演示的那样。(1)打开VisualStudio2005编辑器,单击“文件”菜单,选择“新建项目”命令,打开VisualStudio2005编辑器的创建向导,接着语言选择C#,选择“控制台应用程序”,如图7-3所示。图7-3静态方法演示(2)修改生成的代码文件如下所示:usingSystem;usingSystem.Collections

7、.Generic;usingSystem.Text;namespacestaticway{//定义基类classCommaFile{publicCommaFile(stringfilename){Console.WriteLine("[CommaFile]"+"filename={0}",filename);}}//定义一个枚举结构,模拟用户,供应商和销售商,这些人员需要处理具体的文件enumtableid{customers,suppliers,vendor};//从基类CommaFile中派生出DbTableclassDbTable:CommaFile

8、{//使用静态方法·118·staticstringGetFile

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。