来一篇关于NET的C#中的托付(delegate)
一般的指的.net就是跟java相对的那种,主要是做企业级应用的。你如果想学这个,主要就是学C#和数据库。(ASP.NET好像很重要的,应该也要学的,ASP.NET上好像可以结合VB和C#等多种语言,但是微软主推C#)在C#中作废了指针的观点,对指针依依不舍的程序员能够有两种办理办法:1,声明“非平安”(unsafe)代码段然后在个中利用指针
2,利用C#的一个援用范例——“托付”(delegate)。
“托付”相称与C中的函数指针原型,区分是C#是范例平安的。
“托付”是范例平安的而且完整面向工具的。
天生托付代码的三步骤:
1.天生自界说托付类:delegateintmydel();
2.然后实例化托付类:mydeld=newmydel(MyClass.MyMethod);
3.最初经由过程实例工具挪用办法:intret=d();
注重:
(1)、在C#中,一切的托付都是从System.Delegate类派生的。
(2)、托付的界说必需放在任何类的表面,
如delegateintmydel()
而在类的办法中挪用mydeld=newmydel(MyClass.MyMethod)来实例化自界说托付的实例。
(3)、在创立托付实例时,必要传送将要映照的办法或其他托付实例以指明托付将要封装的函数原型。
注重,假如映照的是静态办法,传送的参数应当是类名.办法名,假如映照的是实例办法,传送的参数应当是实例名.办法名。
(4)、托付隐含具有sealed属性,即不克不及用来派生新的范例。
(5)、在经由过程托付挪用函数前,必需先反省托付是不是为空(null),若非空,才干挪用函数。
(6)、只要当两个托付实例所映照的办法和该办法所属的工具都不异时,才以为它们是想等的(从函数地点思索)。
(7)、托付最年夜的感化就是为类的事务绑定事务处置程序。
(8)、多个托付实例能够构成一个托付链,System.Delegate中界说了用来保护托付链的静态办法Combion,Remove,分离向托付链中增加托付实例和删除托付实例。
(9)、在托付实例中能够封装静态的办法也能够封装实例办法。在VC.net的版本上,为了让C++运行在.NETFramework中,微软为C++引进了托管,就是托管C++(ManagedC++),这个根本就没有流行起来,自托管C++产生以后就没有收到过好评。 关于ASP.NET功能上,ASP.NET比微软以前的ASP(96年出现)有更强大的library,更好的稳定性。ASP.NET可以使用.NETFramework中所有组件(也就是说.NET能实现的,ASP.NET一样能实现)。 使用普通的文本编辑器编写,如记事本就可以完成。由脚本在服务器上而不是客户端运行,ASP所使用的脚本语言都在服务端上运行,用户端的浏览器不需要提供任何别的支持,这样大提高了用户与服务器之间的交互的速度。 比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。封装性使得代码逻辑清晰,易于管理,并且应用到ASP.Net上就可以使业务逻辑和Html页面分离,这样无论页面原型如何改变。 可以通过在现有ASP应用程序中逐渐添加ASP.NET功能,随时增强ASP应用程序的功能。ASP.NET是一个已编译的、基于.NET的环境,可以用任何与.NET兼容的语言(包括VisualBasic.NET、C#和JScript.NET.)创作应用程序。另外,任何ASP.NET应用程序都可以使用整个.NETFramework。开发人员可以方便地获得这些技术的优点,其中包括托管的公共语言运行库环境、类型安全、继承等等。 关于ASP.NET功能上,ASP.NET比微软以前的ASP(96年出现)有更强大的library,更好的稳定性。ASP.NET可以使用.NETFramework中所有组件(也就是说.NET能实现的,ASP.NET一样能实现)。 代码逻辑混乱,难于管理:由于ASP是脚本语言混合html编程,所以你很难看清代码的逻辑关系,并且随着程序的复杂性增加,使得代码的管理十分困难,甚至超出一个程序员所能达到的管理能力,从而造成出错或这样那样的问题。 可以看作是VC和Java的混合体吧,尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性。 使用普通的文本编辑器编写,如记事本就可以完成。由脚本在服务器上而不是客户端运行,ASP所使用的脚本语言都在服务端上运行,用户端的浏览器不需要提供任何别的支持,这样大提高了用户与服务器之间的交互的速度。
页:
[1]