仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 932|回复: 14
打印 上一主题 下一主题

[学习教程] ASP.NET编程:C#析构函数和C#机关函数的用法仓酷云

[复制链接]
柔情似水 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:16:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
c语言的编译器,几乎是所有新平台都有的。因此从这点上看,c语言的程序,比其他任何语言更加容易跨平台。一.C#机关函数与C#析构函数的道理
作为比C更先辈的言语,C#供应了更好的机制来加强程序的平安性。C#编译用具有严厉的范例平安反省功效,它几近能找出程序中一切的语法成绩,这切实其实帮了程序员的年夜忙。可是程序经由过程了编译反省其实不暗示毛病已不存在了,在“毛病”的小家庭里,“语法毛病”的位置只能算是冰山一角。级别高的毛病一般埋没得很深,不简单发明。
依据履历,很多难以发觉的程序毛病是因为变量没有被准确初始化或扫除酿成的,而初始化和扫除事情很简单被人忘记。微软使用面向对象的观点在计划C#言语时充实思索了这个成绩并很好地予以办理:把对象的初始化事情放在机关函数中,把扫除事情放在析构函数中。当对象被创立时,机关函数被主动实行。当对象灭亡时,析构函数被主动实行。如许就不必忧虑健忘对象的初始化和扫除事情。
二.C#机关函数的使用
机关函数的名字不克不及任意起,必需让编译器认得出才能够被主动实行。它的定名办法既复杂又公道:让机关函数与类同名。除名字外,机关函数的另外一个出格的地方是没有前往值范例,这与前往值范例为void的函数分歧。假如它有前往值范例,那末编译器将手足无措。在你能够会见一个类的办法、属性或任何别的工具之前,第一条实行的语句是包括有响应类的机关函数。乃至你本人不写一个机关函数,也会有一个缺省机关函数供应给你。
  1. classTestClass{publicTestClass():base(){}//由CLR供应}
复制代码
上面枚举了几品种型的机关函数
1)缺省机关函数
  1. classTestClass{publicTestClass():base(){}}
复制代码
下面已先容,它由体系(CLR)供应。
2)实例机关函数
实例机关函数是完成对类中实例举行初始化的办法成员。如:
  1. usingSystem;classPoint{publicdoublex,y;publicPoint(){this.x=0;this.y=0;}publicPoint(doublex,doubley){this.x=x;this.y=y;}…}classTest{staticvoidMain(){Pointa=newPoint();Pointb=newPoint(3,4);//用机关函数初始化对象…}}
复制代码
声了然一个类Point,它供应了两个机关函数。它们是重载的。一个是没有参数的Point机关函数和一个是有两个double参数的Point机关函数。假如类中没有供应这些机关函数,那末会CLR会主动供应一个缺省机关函数的。但一旦类中供应了自界说的机关函数,如Point()和Point(doublex,doubley),则缺省机关函数将不会被供应,这一点要注重。
3)静态机关函数
静态机关函数是完成对一个类举行初始化的办法成员。它一样平常用于对静态数据的初始化。静态机关函数不克不及有参数,不克不及有润色符并且不克不及被挪用,当类被加载时,类的静态机关函数主动被挪用。如:
  1. usingSystem.Data;classEmployee{privatestaticDataSetds;staticEmployee(){ds=newDataSet(...);}...}
复制代码
声了然一个有静态机关函数的类Employee。注重静态机关函数只能对静态数据成员举行初始化,而不克不及对非静态数据成员举行初始化。可是,非静态机关函数既能够对静态数据成员赋值,也能够对非静态数据成员举行初始化。
假如类仅包括静态成员,你能够创立一个private的机关函数:privateTestClass(){…},可是private意味着从类的表面不成能会见该机关函数。以是,它不克不及被挪用,且没有对象能够被该类界说实例化。
以上是几品种型机关函数的复杂使用,上面将重点先容一下在类的条理布局中(即承继布局中)基类和派生类的机关函数的利用体例。派生类对象的初始化由基类和派生类配合完成:基类的成员由基类的机关函数初始化,派生类的成员由派生类的机关函数初始化。
当创立派生类的对象时,体系将会挪用基类的机关函数和派生类的机关函数,构造函数的实行序次是:先实行基类的机关函数,再实行派生类的机关函数。假如派生类又有对象成员,则,先实行基类的机关函数,再实行成员对象类的机关函数,最初实行派生类的机关函数。
至于实行基类的甚么机关函数,缺省情形下是实行基类的无参机关函数,假如要实行基类的有参机关函数,则必需在派生类机关函数的成员初始化表中指出。如:
  1. classA{privateintx;publicA(){x=0;}publicA(inti){x=i;}};classB:A{privateinty;publicB(){y=0;}publicB(inti){y=i;}publicB(inti,intj):A(i){y=j;}};Bb1=newB();//实行基类A的机关函数A(),再实行派生类的机关函数B()Bb2=newB(1);//实行基类A的机关函数A(),再实行派生类的机关函数B(int)Bb3=newB(0,1);//实行实行基类A的机关函数A(int),再实行派生类的
复制代码
机关函数B(int,int)
在这里机关函数的实行序次是必定要剖析分明的。别的,假如基类A中没有供应无参机关函数publicA(){x=0;},则在派生类的一切机关函数成员初始化表中必需指出基类A的有参机关函数A(i),以下所示:
  1. classA{privateintx;publicA(inti){x=i;}};classB:A{privateinty;publicB():A(i){y=0;}publicB(inti):A(i){y=i;}publicB(inti,intj):A(i){y=j;}};
复制代码
三.C#析构函数和渣滓接纳器的使用
析构函数是完成烧毁一个类的实例的办法成员。析构函数不克不及有参数,不克不及任何润色符并且不克不及被挪用。因为析构函数的目标与机关函数的相反,就加前缀‘~’以示区分。
固然C#(更切实的说是CLR)供应了一种新的内存办理机制---主动内存办理机制(Automaticmemorymanagement),资本的开释是能够经由过程“渣滓接纳器”主动完成的,一样平常不必要用户干涉,但在有些特别情形下仍是必要用到析构函数的,如在C#中非托管资本的开释。
资本的开释通常为经由过程"渣滓接纳器"主动完成的,但详细来讲,仍有些必要注重的中央:
1.值范例和援用范例的援用实际上是不必要甚么"渣滓接纳器"来开释内存的,由于当它们出了感化域后会主动开释所占内存,由于它们都保留在栈(Stack)中;
2.只要援用范例的援用所指向的对象实例才保留在堆(Heap)中,而堆由于是一个自在存储空间,以是它并没有像"栈"那样有保存期("栈"的元素弹出后就代表保存期停止,也就代表开释了内存),而且要注重的是,"渣滓接纳器"只对这块地区起感化;
也许唯一可以让世人留恋net网页编程的理由就剩下它的王牌——跨平台。
谁可相欹 该用户已被删除
沙发
发表于 2015-1-20 19:00:03 | 只看该作者
可以通过在现有ASP应用程序中逐渐添加ASP.NET功能,随时增强ASP应用程序的功能。ASP.NET是一个已编译的、基于.NET的环境,可以用任何与.NET兼容的语言(包括VisualBasic.NET、C#和JScript.NET.)创作应用程序。另外,任何ASP.NET应用程序都可以使用整个.NETFramework。开发人员可以方便地获得这些技术的优点,其中包括托管的公共语言运行库环境、类型安全、继承等等。
兰色精灵 该用户已被删除
板凳
发表于 2015-1-25 13:15:37 | 只看该作者
这也就是最近几年来随着各种新的后台技术的诞生,CGI应用在Internet上越来越少的原因。CGI方式不适合大访问量的应用。
山那边是海 该用户已被删除
地板
发表于 2015-2-2 22:12:53 | 只看该作者
主流网站开发语言之CGI:CGI就是公共网关接口(CommonGatewayInterface)的缩写。它是最早被用来建立动态网站的后台技术。这种技术可以使用各种语言来编写后台程序,例如C,C++,Java,Pascal等。
简单生活 该用户已被删除
5#
发表于 2015-2-2 22:33:32 | 只看该作者
Servlet的形式和前面讲的CGI差不多,它是HTML代码和后台程序分开的。它们的启动原理也差不多,都是服务器接到客户端的请求后,进行应答。不同的是,CGI对每个客户请求都打开一个进程(Process)。
飘灵儿 该用户已被删除
6#
发表于 2015-2-6 15:48:07 | 只看该作者
同时也感谢博客园给我们这个平台,也感谢博客园的编辑们做成专题引来这么多高人指点。
海妖 该用户已被删除
7#
发表于 2015-2-12 06:43:55 | 只看该作者
JSP/Servlet虽然在国内目前的应用并不广泛,但是其前途不可限量。
爱飞 该用户已被删除
8#
发表于 2015-2-18 22:58:59 | 只看该作者
JSP/Servlet虽然在国内目前的应用并不广泛,但是其前途不可限量。
因胸联盟 该用户已被删除
9#
发表于 2015-2-28 19:48:12 | 只看该作者
ASP.net的服务器,要求安装一个.net环境,当然我这里指的是windows系统,顺便点一下,.net只能放在windows环境里来运行。Asp.net1.1的就装Framework1.1,Asp.net2.0的就装Framework2.0。
变相怪杰 该用户已被删除
10#
发表于 2015-3-2 20:30:50 | 只看该作者
在调试JSP代码时,如果程序出错,JSP服务器会返回出错信息,并在浏览器中显示。这时,由于JSP是先被转换成Servlet后再运行的,所以,浏览器中所显示的代码出错的行数并不是JSP源代码的行数。
小魔女 该用户已被删除
11#
发表于 2015-3-7 12:04:31 | 只看该作者
ASP.NET可以无缝地与WYSIWYGHTML编辑器和其他编程工具(包括MicrosoftVisualStudio.NET)一起工作。这不仅使得Web开发更加方便,而且还能提供这些工具必须提供的所有优点,包括开发人员可以用来将服务器控件拖放到Web页的GUI和完全集成的调试支持。微软为ASP.net设计了这样一些策略:易于写出结构清晰的代码、代码易于重用和共享、可用编译类语言编写等等,目的是让程序员更容易开发出Web应用,满足计算向Web转移的战略需要。
愤怒的大鸟 该用户已被删除
12#
发表于 2015-3-8 16:17:03 | 只看该作者
有一丝可惜的是,这个系列太强了,Java阵营的朋友根本就是哑口无言...争论之火瞬间被浇灭,这不是我想这么早就看到的,但是值了。
13#
发表于 2015-3-10 12:51:42 | 只看该作者
众所周知,Windows以易用而出名,也因此占据不少的服务器市场。
乐观 该用户已被删除
14#
发表于 2015-3-17 07:10:37 | 只看该作者
ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象。
柔情似水 该用户已被删除
15#
 楼主| 发表于 2015-3-24 01:22:50 | 只看该作者
碰到复杂点的问题都不知道能不能解决,现在有点实力的公司都选择自已在开源的基础上做开发。但没听说过有人在IIS上做改进的,windows、sqlserver集群方面的应用也很少见。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-3 19:29

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表