关于c#中c 构造函数数的演讲稿

构造函数分为:1.实例构造函数2.私有构造函数3.静态构造函数构造函数是一种特殊的方法,主要是为了给初始化对象赋初值。1.实例构造函数
使用new表达式创建某个类的对象时,会使用实例构造函数创建和初始化所有实例成员变量。
&public&class&ProgramTest&&&&{&&&&&&&&int&j;&&&&&&&&public&ProgramTest()&&&&&&&&{&&&&&&&&&&&&j&=&4;&&&&&&&&&&&&Console.WriteLine("I&am&ProgramTest,{0}", j);&&&&&&&&}&&&&&&&&static&void&Main(string[]&args)&&&&&&&&{&&&&&&&&&&&&ProgramTest&pt&=&new&ProgramTest();&&&&&&&&&&&&Console.Read();&&&&&&&&}
结果为:I am ProgramTest,4
在此次实验中,我们首先定义了一个私有成员j,经过初始化给他赋了一个初值4,当我实例化类ProgramTest时,就会执行实例构造函数。诸如此类不带参数的构造函数叫&默认构造函数&,如果某个类没有构造函数,则会自动生成一个默认构造函数,并使用默认值来初始化对象字段。
public&class&ProgramTest&&&&{&&&&&&&&int&j;&&&&&&&&public&ProgramTest()&&&&&&&&{&&&&&&&&&&&&Console.WriteLine("I&am&ProgramTest,{0}",&j);&&&&&&&&}&&&&&&&&static&void&Main(string[]&args)&&&&&&&&{&&&&&&&&&&&&ProgramTest&pt&=&new&ProgramTest();&&&&&&&&&&&&Console.Read();&&&&&&&&}&&&&}结果为:I&am&ProgramTest,0&
也可以创建带有参数的构造函数
&public&class&ProgramTest&&&&{&&&&&&&&int&j;&&&&&&&&public&ProgramTest(int&i)&&&&&&&&{&&&&&&&&&&&&j&=&2;&&&&&&&&&&&&Console.WriteLine("I&am&ProgramTest,i={0},j={1}",i,&j);&&&&&&&&}&&&&&&&&static&void&Main(string[]&args)&&&&&&&&{&&&&&&&&&&&&ProgramTest&pt&=&new&ProgramTest(1);&&&&&&&&&&&&Console.Read();&&&&&&&&}
结果为:I&am&ProgramTest i=1,j=2&
那若是一个类中既有无参构造函数,又有有参构造函数那会怎么样呢?
&public&class&ProgramTest&&&&{&&&&&&&&int&j;&&&&&&&&public&ProgramTest()&&&&&&&&{&&&&&&&&&&&&j&=&3;&&&&&&&&&&&&Console.WriteLine("I&am&ProgramTest&默认构造函数,j={0}",&j);&&&&&&&&}&&&&&&&&public&ProgramTest(int&i)&&&&&&&&{&&&&&&&&&&&&j&=&2;&&&&&&&&&&&&Console.WriteLine("I&am&ProgramTest&有参构造函数,i={0},j={1}",i,&j);&&&&&&&&}&&&&&&&&static&void&Main(string[]&args)&&&&&&&&{&&&&&&&&&&&&ProgramTest&pt1&=&new&ProgramTest();&&&&&&&&&&&&ProgramTest&pt2&=&new&ProgramTest(1);&&&&&&&&&&&&Console.Read();&&&&&&&&}
结果为:I&am&ProgramTest 默认构造函数 j=3&&&&&& I am ProgramTest 有参构造函数 i=1,j=2
可见,若是两者同时存在,那么看类实例化时,是怎么实例的。2.私有构造函数
私有构造函数是一种特殊的实例构造函数。它通常用在只包含静态成员的类中。 如果类具有一个或多个私有构造函数而没有公共构造函数,则其他类(除嵌套类外)无法创建该类的实例。
&&& public&class&Test&&&&{&&&&&&&&private&&Test()&&&&&&&&{&&&&&&&&&&&&Console.WriteLine("I&am&Test");&&&&&&&&}&&&&}&&&&public&class&ProgramTest&&&&{&&&&&&&&int&j;&&&&&&&&private&ProgramTest()&&&&&&&&{&&&&&&&&&&&&j&=&3;&&&&&&&&&&&&Console.WriteLine("I&am&ProgramTest&默认构造函数,j={0}",&j);&&&&&&&&}&&&&&&&&static&void&Main(string[]&args)&&&&&&&&{&&&&&&&&&&&&Test&t&=&new&Test();&&&&&&&&&&&&ProgramTest&pt1&=&new&ProgramTest();&&&&&&&&&&&&Console.Read();&&&&&&&&}&&&&}
结果:这时你会发现编译器会提示你,你无法创建Test的实例(即使你在Test类中添加一个静态成员,结果依然会提示因为该构造函数受其保护级别的限制而不可访问)
若是只在自己类里有私有类呢?
&&public&class&ProgramTest&&&&{&&&&&&&&int&j;&&&&&&&&private&ProgramTest()&&&&&&&&{&&&&&&&&&&&&j&=&3;&&&&&&&&&&&&Console.WriteLine("I&am&ProgramTest&默认构造函数,j={0}",&j);&&&&&&&&}&&&&&&&&static&void&Main(string[]&args)&&&&&&&&{&&&&&&&&&&&&ProgramTest&pt1&=&new&ProgramTest();&&&&&&&&&&&&Console.Read();&&&&&&&&}&&&&}
结果:I am ProgranmTest 默认构造函数,j=3
注意,如果您不对构造函数使用访问修饰符,则在默认情况下它仍为私有构造函数。但是,通常显式地使用private修饰符来清楚地表明该类不能被实例化。若是一个类中既有实例构造函数又有私有构造函数,那么当实例对象是会怎么执行呢?
&public&class&Test&&&&{&&&&&&&&int&i;&&&&&&&&private&&Test()&&&&&&&&{&&&&&&&&&&&&i&=&1;&&&&&&&&&&&&Console.WriteLine("I&am&Test&默认构造函数&i={0}",&i);&&&&&&&&}&&&&&&&&public Test(int&i)&&&&&&&&{&&&&&&&&&&&&Console.WriteLine("I&am&Test&有参构造函数&i={0}",&i);&&&&&&&&}&&&&}&&&&public&class&ProgramTest&&&&{&&&&&&&&static&void&Main(string[]&args)&&&&&&&&{&&&&&&&&&&&&Test&t&=&new&Test();& //编译器提示:因为该构造函数受其保护级别的限制而不可访问&&&&&&& &&&&&&&&&&& Console.Read();
若是只执行有参构造函数呢?
&&public&class&Test&&&&{&&&&&&&&int&i;&&&&&&&&private&&Test()&&&&&&&&{&&&&&&&&&&&&i&=&1;&&&&&&&&&&&&Console.WriteLine("I&am&Test&默认构造函数&i={0}",&i);&&&&&&&&}&&&&&&&&public&Test(int&i)&&&&&&&&{&&&&&&&&&&&&Console.WriteLine("I&am&Test&有参构造函数&i={0}",&i);&&&&&&&&}&&&&}&&&&public&class&ProgramTest&&&&{&&&&&&&&static&void&Main(string[]&args)&&&&&&&&{&&&&&&&&&&&&Test&t&=&new&Test(2);&&&&&&&&&&&&Console.Read();&&&&&&&&}&&&&}
结果:I am Test 有参构造函数 i=2
3.静态构造函数静态构造函数用来初始化静态变量,这个构造函数是属于类的,而不是属于哪个实例的。
就是说这个构造函数只会被执行一次。也就是在创建第一个实例或引用任何静态成员之前,由.NET自动调用。
&public&class&Test&&&&{&&&&&&&&static&int&i;&&&&&&&&static&&Test()&&&&&&&&{&&&&&&&&&&&&i&=&1;&&&&&&&&&&&&Console.WriteLine("I&am&Test&默认构造函数&i={0}",&i);&&&&&&&&}&&&&}&&&&public&class&ProgramTest&&&&{&&&&&&&&static&void&Main(string[]&args)&&&&&&&&{&&&&&&&&&&&&Test&t1&=&new&Test();&&&&&&&&&&&&Console.Read();&&&&&&&&}&&&&}
结果为:I am Test 默认构造函数 i=1
静态构造函数的特点:
1.静态构造函数既没有访问修饰符,也没有参数。2.在创建第一个实例或引用任何静态成员之前,将自动调用静态构造函数来初始化类,也就是无法直接调用静态构造函数,也无法控制什么时候执行静态构造函数。
3.一个类只能有一个静态构造函数,最多只能运行一次。4.静态构造函数不可以被继承。5.如果没有静态构造函数,而类中的静态成员有初始值,那么编译器会自动生成默认的静态构造函数。如果静态默认构造函数和公有默认构造函数同时存在,会怎么样呢?
&&& public&class&Test&&&&{&&&&&&&&static&int&i;&&&&&&&&static&&Test()&&&&&&&&{&&&&&&&&&&&&i&=&1;&&&&&&&&&&&&Console.WriteLine("I&am&Test&静态默认构造函数&i={0}",&i);&&&&&&&&}&&&&&&&&public&Test()&&&&&&&&{&&&&&&&&&&&&Console.WriteLine("I&am&Test&公有默认构造函数&i={0}",&i);&&&&&&&&}&&&&}&&&&public&class&ProgramTest&&&&{&&&&&&&&static&void&Main(string[]&args)&&&&&&&&{&&&&&&&&&&&&Test&t1&=&new&Test();&&&&&&&&&&&&Console.Read();&&&&&&&&}&&&&}
结果:I am Test 静态默认构造函数 i=1
&&&& I am Test 公有默认构造函数 i=1
如果静态默认构造函数和公有有参构造函数同时存在,我实例化类让它调用静态默认构造函数会怎么样呢?
&public&class&Test&&&&{&&&&&&&&static&int&i;&&&&&&&&static&&Test()&&&&&&&&{&&&&&&&&&&&&i&=&1;&&&&&&&&&&&&Console.WriteLine("I&am&Test&静态默认构造函数&i={0}",&i);&&&&&&&&}&&&&&&&&public&Test(int&j)&&&&&&&&{&&&&&&&&&&&&Console.WriteLine("I&am&Test&公有有参构造函数&i={0}",&j);&&&&&&&&}&&&&}&&&&public&class&ProgramTest&&&&{&&&&&&&&static&void&Main(string[]&args)&&&&&&&&{&&&&&&&&&&&&Test&t1&=&new&Test();& //系统会提示错误&&&&&& &&&&&&&&&&&&Console.Read();
如果静态默认构造函数和公有有参构造函数同时存在,我实例化类让它调用公有构造函数会怎么样呢?
&&& public&class&Test&&&&{&&&&&&&&static&int&i;&&&&&&&&static&&Test()&&&&&&&&{&&&&&&&&&&&&i&=&1;&&&&&&&&&&&&Console.WriteLine("I&am&Test&静态默认构造函数&i={0}",&i);&&&&&&&&}&&&&&&&&public&Test(int&j)&&&&&&&&{&&&&&&&&&&&&Console.WriteLine("I&am&Test&公有有参构造函数&i={0}",&j);&&&&&&&&}&&&&}&&&&public&class&ProgramTest&&&&{&&&&&&&&static&void&Main(string[]&args)&&&&&&&&{&&&&&&&&&&&&Test&t1&=&new&Test(2);&&&&&&&&&&&&Console.Read();&&&&&&&&}&&&&}
结果:I am Test 静态默认构造函数 i=1&&&& I am Test 公有有参构造函数 j=2
阅读(...) 评论()您所在的位置: &
C#构造函数的特性及使用详解
C#构造函数的特性及使用详解
C#构造函数的特性有哪些呢?C#构造函数是编程人员面对最多的,那么C#构造函数的特性及使用有什么需要学习的呢?本文详解了C#构造函数的特性及使用情况。
C#构造函数的特性及使用情况是如何的呢?下面我们分两个部分来向你讲解:
C#构造函数的特性一、
什么是C#构造函数?Construct,Function
C#构造函数是一种特殊的成员函数,它主要用于为对象分配存储空间,对数据成员进行初始化.
C#构造函数具有一些特殊的性质:
(1)C#构造函数的名字必须与类同名;
(2)C#构造函数没有返回类型,它可以带参数,也可以不带参数;
(3)声明类对象时,系统自动调用构造函数,构造函数不能被显式调用;
(4)C#构造函数可以重载,从而提供初始化类对象的不同方法;
(5)若在声明时未定义构造函数,系统会自动生成默认的构造函数,此时构造函数的函数体为空.
(6)静态构造函数,用static修饰,用于初始化静态变量,一个类只允许有一个构造函数,在类实例化时加载,这时修饰符public、private失去作用.
(7)可以使用public、protected、private修饰符。.
(8)引用父类构造时用():base()方法,引用自身重载的构造使用():this(int para).
(7)可以使用public、protected、private修饰符。
C#构造函数的特性之C#构造函数使用时注意事项:
1、定义了一个带参构造函数后,最好定义一个无参构造函数,这样可以避免子类调用时出错
2、调用基类构造函数:base() 或 :base(参数列表)& 调用本类其它构造函数 :this() 或 :this(参数列表)
3、只有在用base显示调用父类的构造函数时,程序才不会默认的调用不带参数的构造函数。
C#构造函数的特性二、
C#构造函数的结构层次关系或者说执行顺序是怎样的?Layer,Transfer,Execute
从基类开始构造对象。public&class&MyBaseClass &{ &public&MyBaseClass() &{ &Console.WriteLine("In&MyBaseClass()"); &} &public&MyBaseClass(int&i) &{ &Console.WriteLine("In&MyBaseClass(int&i)"); &} &} &public&class&MyDerivedClass&:&MyBaseClass &{ &public&MyDerivedClass() &{ &Console.WriteLine("In&MyDerivedClass()"); &} &public&MyDerivedClass(int&i) &{ &Console.WriteLine("In&MyDerivedClass(int&i)"); &} &&&&&public&MyDerivedClass(int&i,&int&j) &:&base(i) &{ &Console.WriteLine("In&MyDerivedClass(int&i,int&j):base(i)"); &} &} &class&Program &{ &static&void&Main(string[]&args) &{ &&MyDerivedClass&myObj1&=&new&MyDerivedClass(); &Console.WriteLine(); &&MyDerivedClass&myObj2&=&new&MyDerivedClass(4); &Console.WriteLine(); &&MyDerivedClass&myObj3&=&new&MyDerivedClass(4,8); &Console.WriteLine(); &Console.ReadKey(); &} &}&
C#构造函数执行程序输出:In&MyBaseClass() &&In&MyDerivedClass() &&&In&MyBaseClass() &&In&MyDerivedClass(int&i) &&&In&MyBaseClass(int&i) &&In&MyDerivedClass(int&i,int&j):base(i)&
很明显,只有在用base显示调用父类的构造函数时,程序才不会默认的调用不带参数的构造函数。
C#构造函数的特性及使用就向你介绍到这里,希望对你理解和使用C#构造函数的特性有所帮助。
【编辑推荐】
【责任编辑: TEL:(010)】
关于的更多文章
AngularJS是很多Web开发人员在打造单页面应用程序时的首选创建方
作为移动开发者,WOT2016移动互联网技术峰会,绝对有你不得不来的理由。
讲师: 35人学习过讲师: 17人学习过讲师: 252人学习过
新手程序员你们好!你是否做好了进入编程世界的准备呢
TIOBE编程语言排行榜Java以4.5%的差距遥遥领先于第二
你想知道618大促都有哪些技术支撑吗?你想知道京东白
本书面向企业网络应用需求,详细介绍了Windows网络互联解决方案、中小企业共享上网解决方案、基于ISA Server 2006的代理服务器与
51CTO旗下网站构造函数的继承 C#_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
构造函数的继承 C#
上传于||文档简介
&&构​造​函​数​的​继​承​ ​C​#
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩1页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢【求教】在写构造函数的时候,有一个快捷键是什么?_c#吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:90,763贴子:
【求教】在写构造函数的时候,有一个快捷键是什么?收藏
就是不用自己一行一行写代码,写完字段后,按快捷键就自动出来get和set的那个,知道的请告知是什么快捷键,谢谢各位了。
c#零基础120天成就白领人才!1OO%高薪就业!入学即签就业协议!先就业再付款体制,更有专业教师备考技巧课免费试听,赶紧在线预约吧!
是这样吧 public string Value{}
或者封装 ctrl+r,e
prop然后按tab
会自动生成一个自动属性
输入propfull然后按tab 会自动生成一个带字段的属性
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或c#结构中的构造函数_百度知道}

我要回帖

更多关于 c 调用父类构造函数 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信