C#4_Linq_to_Object_学习笔记_1

C#4_Linq_to_Object_学习笔记_1

ID:40543342

大小:54.38 KB

页数:4页

时间:2019-08-04

C#4_Linq_to_Object_学习笔记_1_第1页
C#4_Linq_to_Object_学习笔记_1_第2页
C#4_Linq_to_Object_学习笔记_1_第3页
C#4_Linq_to_Object_学习笔记_1_第4页
资源描述:

《C#4_Linq_to_Object_学习笔记_1》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、C#4.0LinqtoObject学习笔记(一)扩展方法(ExtensionMethods)扩展方法允许我们对任何类型在没有继承和改变源代码的情况下,去添加额外的方法。这些被添加的扩展方法,在实用时与原有的方法一样,用.net符号调用。扩展方法被作为静态方法在一个静态类中构建。方法的第一个参数的类型前包含了this修改器,它告诉编译器,后面的类型将要被扩展。除了第二个参数变成了第一个参数,第三个参数编程第二个参数外(因为第一个带有this修改器的参数被跳过),其他的任何参数都会被正常处理。定义扩展方法的规则如下:1.扩展方法必须被定义在一个非泛型的静类中。2.静态类必须位于一个名字空间的根

2、级别(不是被嵌入在另一个类中)3.扩展方法必须是一个静态方法(因为这个类也必须是静态类,这是编译器强制的)4.扩展方法的第一个参数必须以this修改器作为前缀;this就是被扩展的类。下面我们通过一个实例来演示下扩展类的机制,我们通过一个扩展类为System.String添加一个方法GetSHA1Hash.编译工程后,任何使用了usingMyNamespace的代码文件,都能用一个String实例简单的调用这个方法,就像如下的例子:stringpassword="ClearTextPassword";stringhashedPassword=password.GetSHA1Hash();现

3、在我们新建一个C#的控制台工程,并添加一个MyNamespace的class文件。源代码如下:usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Security.Cryptography;namespaceMyNamespace{publicstaticclassMyStringExtensions{//extensionmethodaddedtotheStringtype,//singlestringargument:url.publicstaticstrin

4、gCreateHyperlink(thisstringtext,stringurl){returnString.Format("{1}",url,text);}//extensionmethodaddedtotheStringtype,//withnoadditionalargumentspublicstaticstringGetSHA1Hash(thisstringtext){if(string.IsNullOrEmpty(text))returnnull;SHA1Managedsha1=newSHA1Managed();byte[]bytes=sha1

5、.ComputeHash(newUnicodeEncoding().GetBytes(text));returnConvert.ToBase64String(bytes);}}}Programs.cs代码如下:usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingMyNamespace;namespaceExtension_Methods_01{classProgram{//Methodsintroducedtoagiventypeusingextensionmethodscan

6、be//calledonaninstanceofthattypeinthesamewayordinaryinstance//methodsarecalledstaticvoidMain(string[]args){//SHA1Hashingastring.//GetSHA1Hashisintroducedviaextensionmethodstringpassword="ClearTextPassword";stringhashedPassword=password.GetSHA1Hash();//writetheresultstotheConsolewindowConsole.Write

7、Line("-SHA1Hashingastring-");Console.WriteLine("Original:"+password);Console.WriteLine("Hashed:"+hashedPassword);}}}保存你的文件,并编译运行它,结果如下:被定义在一个命名空间中的扩展方法被一个引用了该命名空间的文件调用是有效的,这一点就像你使用LINQtoObjects时,在你的文件中引用了System.L

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

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

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