c#3.0新特性:扩展方法初探

c#3.0新特性:扩展方法初探

ID:15380508

大小:73.50 KB

页数:6页

时间:2018-08-03

c#3.0新特性:扩展方法初探_第1页
c#3.0新特性:扩展方法初探_第2页
c#3.0新特性:扩展方法初探_第3页
c#3.0新特性:扩展方法初探_第4页
c#3.0新特性:扩展方法初探_第5页
资源描述:

《c#3.0新特性:扩展方法初探》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、欢迎访问中文C#技术站!返回首页FreeBlogwithdomains!Domainsaslowas$1.19/ea,freewebsiteandmoreGlobe7-Free!CallFree,ChatFreeandWatchTVforFree!Globe7-FreeDownload!Phone+Chat+Radio+TVFree!DownloadNow!BiztalkServerResourcesBiztalkServerCommunitySitewithFreeSamples,Labs,andVideos返回本类>>C#3.0新特性:扩展方法初探C

2、#3.0新特性:扩展方法初探www.chinacs.net  2006-03-26  中文C#技术站  C#3.0中一个激动人心的特性就是扩展方法:你可以使用实例方法的语法来调用静态方法。本文仔细阐述了这一新特性并且给出了几个相应的例子。  声明扩展方法  扩展方法的行为和静态方法是非常类似的,你只能在静态类中声明它们。为声明一个扩展方法,你需要给该方法的第一个参数指定this关键字,如下例://Program.cspublicstaticclassEMClass{ publicstaticintToInt32Ext(thisstrings) {  re

3、turnInt32.Parse(s); } publicstaticintToInt32Static(strings) {  returnInt32.Parse(s); }}classProgram{ staticvoidMain(string[]args) {  strings="9";  inti=s.ToInt32Ext();//LINEA  Console.WriteLine(i);  intj=EMClass.ToInt32Static(s);//LINEB  Console.WriteLine(j);  Console.ReadLine();

4、 }}  为编译如上代码,你需要安装VisualStudio2005和LINQ的预览版。如果你已经安装了VS2005,那么你将在VisualC#的LINQPreview里看到三个新的工程模板:LINQ命令行应用程序,LINQ窗口程序和LINQ库。如下操作编译代码:  1.打开VS2005编辑器,创建一个新工程,在新建工程窗口中选择LINQConsole作为工程模板。  2.将工程命名为ExtensionMethods,点击Ok。  3.将如上代码键入编辑器。  4.按下F5编译工程并运行。  如果你只是安装了.NET2.0,那么你可以运行命令行编译器:C

5、sc.exe/reference:"C:ProgramFilesLINQPreviewBinSystem.Data.DLINQ.dll"/reference:C:WINDOWSMicrosoft.NETFrameworkv2.0.50727System.dll/reference:"C:ProgramFilesLINQPreviewBinSystem.Query.dll"/reference:"C:ProgramFilesLINQPreviewBinSystem.Xml.XLINQ.dll"/target:exeProg

6、ram.cs  就像你在如上代码里所看到的那样,扩展方法(ToInt32Ext)和普通的静态方法(ToInt32Static)的不同在于:  1.扩展方法的第一个参数有一个this关键字,而静态方法不会在它的参数声明里有this关键字。  2.当使用扩展方法的是哦户,使用this关键字声明的的参数没有进行传递。在上面的例子里,LineA就是一个使用扩展方法ToInt32Ext的例子。不需要将参数传递给它。当静态方法在使用的时候,是不能忽略掉任何的参数的。所有的参数必须传递进入函数。LineB就是一个例子。  3.扩展方法只能在静态类中定义。对于静态方法,

7、这并不成为一个要求,因为静态方法可以在一个静态类或普通类中存在。  4.扩展方法只能针对实例调用。  扩展方法,尽管本质上还是静态的,但是只能针对实例调用。如果在一个类中调用它们将会引发编译错误。调用它们的类实例是由声明中的第一个参数决定的,就是有关键字this修饰的那个。  在IL内部  如果你观看IL里对以上代码的分析结果,你将会看到如下图的结果:  以下是IL对于扩展方法ToInt32Ext的分析:.methodpublichidebysigstaticint32ToInt32Ext(strings)cilmanaged{ .custominsta

8、ncevoid[System.Query]System.Runtime .Com

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

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

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