C#中构造函数浅析

来源 :电脑知识与技术·学术交流 | 被引量 : 0次 | 上传用户:xuanka11
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:构造函数是C#语言中一种非常重要的方法,该文简要介绍了构造函数的概念和作用,较系统地的介绍了各类构造函数在C#中的运用,以及在使用过程中需要注意的若干事项。
  关键词:.NET ;C#语言;构造函数
  中图分类号:TP311文献标识码:A 文章编号:1009-3044(2008)27-1994-02
  Analysis of Constructor Function in C#
  XIA Qing-Lin
  (Lujiang County, Anhui Province Management of Public Housing Management Personnel,Lujiang 231500,China)
  Abstract:Constructors function in the C# language is a very important way, this article briefly introduced the concept of constructor function and role of a system introduced in all types of structural function of the use of C# language, and in the process of using a number of issues need attention.
  Key words: .NET; C#Language; constructor
  
  1 引言
  
  微软公司于2002年发布了.NET平台,它集成了各种软件、技术、组件和服务,随着.NET平台的发布微软也同时推出了一种新的语言——C#。C#不仅从C 语言吸取了语言简单、优雅的优点,而且具有同JAVA语言类似的完全面向对象和与平台无关等优点,此外C#与WEB紧密结合,且对XML提供了很好的支持,因此使用C#不仅可以很快捷地开发Windows应用程序和WEB应用程序,也可以方便地开发XML Web Services应用程序,所以C#语言一经推出,立刻在业界引起轰动,目前它已成为众多软件开发人员的首选语言之一。
  C#是一种完全面向对象的语言,不仅提供了高度的抽象、封闭、继承、多态等特性,而且同样提供了构造函数用来完成对象的初始化等工作,相对于C 和JAVA,C#中的构造函数提供了更加强大的功能,具有自身的特色。
  
  2使用实例构造函数创建对象
  
  在各种面向对象语言中,类都是一个是最基本和最重要的概念。类是一种自定义的数据类型,是现实世界中各种实体的抽象,在类中可以封装各种数据及操作,可以包含各种成员,比如在C#语言中,可以有成员变量、成员方法、属性、索引器、委托等等。构造函数就是类中一种特殊的成员方法,它会在创建类的对象实例时被系统自动调用执行,人们调用构造函数来为类对象分配空间,给它的数据成员赋初值,以及其它请求资源的工作。
  在C#中实例构造函数又分为默认构造函数和非默认构造函数,默认构造函数由系统自动提供,没有参数和函数体语句,当我们没有显式定义构造函数时,系统会自动生成,实际上它仅负责创建对象,而不做任何初始化工作。如果我们想在对象创建时被自动初始化类中的成员数据或执行某些操作,可以使用非默认构造函数,它具有以下几个特点:(1)访问修饰符一般总为public(也可以为private,此时该构造函数称为私有构造函数,不能用于对象的初始化,一般为另一个公开的构造函数所调用);(2)构造函数名与类名相同;(3)没有返回值类型,如下例所示:
  using System;
  class Point
  {
  public intx, y;
  //下面为实例构造函数的定义
  public Point(int x , inty)
  {
  this.x = x;
  this.y = y;
  }
  //类中其它成员的定义
  }
  当我们使用new运算符来实例化对象时,系统会自动调用其构造函数来生成对象,并在堆上为其分配内存空间,然后进行初始化操作,如可用下面的系列语句来生成一个位于(10,10)位置的点对象a:
  class Test
  {
  pulic static void Main()
  {
  Point a = new Point(10, 10); // 自动调用构造函数来初始化对象
  …
  }
  }
  
  3 重载构造函数
  
  在C#中方法是可以重载的,通过使用方法重载,可以实现静态的多态性,通过引用相同的方法名和不同的参数来执行类似的功能。由于构造函数是类中一种特殊的方法,所以它也可以进行重载,通过重载构造函数可以实现对象初始化的多样化。
  与方法的重载相似,当我们在类中定义两个或两个以上的构造函数,它们的函数名称相同(由于构造函数与类名相同,所以必然相同),而函数的参数不同(或参数个数不同,或参数类型不同),就实现了构造函数的重载。当我们使用new操作符来实例化对象时,系统会自动根据实参的个数及类型来寻找并调用与之相匹配的构造函数。如下例所示:
  using System;
  class Triangle
  {
  doublies;
  //构造函数1:已知三角形三边,根据海伦公式求面积
  public Triangle(doulue a,double b,double c)
  {
  doublep=(a b c)/2;
  s=Math.Sqrt(p*(p-a)*(p-b)*(p-c));
  }
  //构造函数2:已知三角形的底和高求面积
  public Triangle(double l,double h)
  {
  s=l*h/2;
  }
  }
  由于在该类中定义了两个构造函数,具体调用哪个将由参数来决定,如下例代码所示:
  Triangle t1 = new Triangle(3,4,5);//系统自动调用构造函数1
  Triangle t2 = new Triangle(4,5);//系统自动调用构造函数2
  
  4 静态构造函数
  
  在类中不仅有实例变量,还可能会有静态变量,前已述及实例变量可以使用实例构造函数进行初始化,与之相对应C#中可以使用静态构造函数来对类中静态变量进行初始化。静态构造函数在该类被第一次使用(使用静态成员或调用其实例构造函数)之前被自动调用,且只调用一次。显而易见,如果一个类中既有实例构造函数,又有静态构造函数,必然会先调用实例构造函数。
  此外还必须要注意的是静态构造函数只能对静态数据成员进行初始化,而不能对非静态数据成员进行初始化;而实例构造函数既可以对静态数据成员赋值,也可以对非静态数据成员赋值。静态构造函数的定义是非常简单的,只要在定义时前加static修饰符即可,如下例所示:
  using System;
  classPerson
  {
  static strint nation;//静态数据成员
  stringname; //非静态数据成员
  //静态构造函数的定义
  static Person()
  {
   nation= "CHINA";
  }
  //实例构造函数的定义
  Person(string sname)
   {
   name = sname;
   }
  }
  
  5 结束语
  
  构造函数看似简单,实示上它是C#中极其重要的一种函数,灵活而正确的使用构造函数能够帮助你编制更有效的程序、更好的理解CLR的内存管理机制,以及更好的管理系统中的资源。
  
  参考文献:
  [1] 微软公司.C#程序设计语言[M].北京:高等教育出版社,2003.
  [2] 微软公司.Visual C# 2005程序设计语言[M].北京:高等教育出版社,2007.
  [3] 吕凤翥.C 语言程序设计[M].北京:电子工业出版社,2002.
其他文献
摘要:阐明了基于Web数据库的交互式电子技术手册的研究意义;然后以美国国防部MIL-HDBK-511标准为参照,采用asp技术和ODBC接口相结合的方法来设计和访问Web数据库,提出了设计和实现基于Web数据库的交互式电子技术手册的具体方法,在交互式电子技术手册技术向网络化发展做了一些探讨工作。  关键词:交互式电子技术手册;Web数据库;对象封装  中图分类号:TP311文献标识码:A文章编号:
摘要:介绍了数字签名背景、签名体制的形式化描述以及两个特殊的数字签名方案。对如何用RSA实现盲签名和多重数字签名方案进行了研究,分析了两种具体方案实现的安全性。最后总结了这两种特殊数字签名实现过程中算法设计的优劣。  关键词:数字签名;RSA;盲签名;多重签名  中图分类号:TP316文献标识码:A文章编号:1009-3044(2008)35-2095-02  Two RSA-based Spec
摘要:本文从介绍企业网站的web使用挖掘的意义入手,着重分析了web使用挖掘的数据源,探讨了Web使用挖掘的常用技术,以及Web 使用挖掘的过程,企业网站的Web使用挖掘应具备的功能。  关键词:企业网站;web使用挖掘;数据源;信息获取  中图分类号:TP393文献标识码:A文章编号:1009-3044(2008)30-0534-02    Web Usage Mining ofEnterpri
“简史”之难为在于概略而难述精妙,尤其是对另一种语言文化下的文学作品,要将其千百年的历史浓缩为一卷,殊为不易。对英美文学的研究除了要概括出其特点和发展过程外,更要进一步认识到文学作品作为一种思维方式和价值观最集中的表现以及给世界带来的深远影响。由蒙雪梅等主编的《英美文学史及选读》一书,是随着国内英美文学作品的出版数量和读者人数增加而出版的一本指導性知识图书。在研究课题“毛南族特有文化遗产的保护与数
摘要:该文来源自2008年度浙江省教育科学(高校)规划研究课题——高职院校《Photoshop》课程项目化教学的研究与实践,文章论述了项目化教学的相关概念,对课题单位金华职业技术学院信息工程学院对《Photoshop》课程开展项目化教学的研究与实践过程进行了论述,为同类课题的研究提供了参考。  关键词:高职; 项目化教学; Photoshop  中图分类号:TP317.4文献标识码:A文章编号:1
长时间以来,写作教学设计一直是语文教学的难题,日常写作教学设计大都粗疏,写作教学品质不高。近年来,尽管统编教材设置了写作专题,但写作教学设计仍然呈现定型化趋势,即按照“写作知识 学生写作”的套路进行。抽象、符号化的知识无法深化学生的思维,无法激活学生的表达潜能,对于学生完成具体的写作任务帮助不大。学习者是带着已有的特定行为倾向来面对学习环境和新的学习任务的,每一位学习者的特征蕴含着不同的教学设计含
摘要:近年来,我国高职软件技术教育蓬勃发展,为国家建设和地方经济发展培养了大量高素质技能型专门人才,同时,软件技术专业的课程存在竞争力缺乏、教学模式相对陈旧等问题,已经不能适应经济和社会发展的需要。本文参考国际软件专业教育或培训的方法,探讨在工学结合人才培养模式下的软件技术专业课程改革与整合。  关键词:工学结合;软件;职业教育;课程改革与整合  中图分类号:G434文献标识码:A文章编号:100
摘要:Ad Hoc网络是一种特殊的多跳移动无线网络,它不需要任何预先设置的固定设施就可组网。由于其组网方式的灵活,使得其存在着较大的安全隐患。根据Ad Hoc网络的特点,分析其面临的各种安全漏洞,并提出了几种Ad Hoc网络的安全策略。  关键词:Ad Hoc Network;自组织网络;网络安全;安全机制  中图分类号:TP393文献标识码:A文章编号:1009-3044(2008)34-160
摘要:在分析分布式体系结构及其特点的基础上,利用Delphi对CORBA技术及Web应用系统开发的支持,将CORBA技术应用于网络教学平台的开发,实现了分布式多层Web应用系统,提高系统的稳定性、延展性和执行效率,解决了大型Web应用系统中存在的负载瓶颈问题。  关键词:CORBA;Delphi;分布式Web应用系统  中图分类号:G434文献标识码:A文章编号:1009-3044(2008)36
1968年生于湖南会同。中国四川省工艺美术大师,四川省美术家协会会员,四川省中国画学会会员,成都当代工笔画研究会理事,成都市美术家协会会员,中国民间艺术家协会会员。  1992年毕业于长春大学美术系,2004年于四川省诗书画院研修班毕业,四川省诗书画院特聘美术师,北京巴蜀画院美术师,四川蜀山画院美术师,电子科技大学成都学院教授。  志龙和我同是刘朴的学生。十年前我们在四川省诗书画院研修班开学典礼上