扩展方法学习总结
2015-08-16 23:11
330 查看
什么是扩展方法?怎么写扩展方法?下面将一一解答。
首先,用扩展方法的目标是对现有的类提供额外的方法以增强该类的功能。
比方说我们想把字符串的转换成第一个字母大写,其他的字母小写。现在VS并没有提供这样直接转换的功能,如果要用的话就需要截取和拼接字符串才能做到。但是如果用到的多了的话,这样做是很麻烦的。此时,我们就可以给字符串添加一个扩展方法,就像ToUpper,ToLower一样,直接点出来转换就可以完成转换。
其次,扩展方法的注意事项
1.扩展方法是一种特殊的静态方法
2.扩展方法必须在静态类中定义
3.扩展方法的优先级低于同名的类方法
4.扩展方法只在特定的命名空间内有效
下面,上代码
扩展方法还有一个特点就是只在特定的命名空间内有效,(也就是注意事项的第4条)意思是说这个扩展方法写在哪个命名空间里面了,就只能在这个命名空间内使用,换命名空间了就不能调用到它了,需要先引用扩展方法所在的命名空间。这样也挺麻烦的。那怎么办呢?当然还有很简单很直接的方法,就是将扩展方法所在类的命名空间直接改成和扩展的类的命名空间一样就可以了。比如说,string类的命名空间是System,那么我们把我们写的那个扩展方法的类的命名空间也改成System。
这样,只要用到了string,那么就一定用到了System这个命名空间,那么相当于我们的扩展方法也引用进来了。
像string这样的类都是密封类,是不能被继承的。那么如果我们想要对它进行扩展的话就需要可以用扩展方法,大大的方便了我们。
首先,用扩展方法的目标是对现有的类提供额外的方法以增强该类的功能。
比方说我们想把字符串的转换成第一个字母大写,其他的字母小写。现在VS并没有提供这样直接转换的功能,如果要用的话就需要截取和拼接字符串才能做到。但是如果用到的多了的话,这样做是很麻烦的。此时,我们就可以给字符串添加一个扩展方法,就像ToUpper,ToLower一样,直接点出来转换就可以完成转换。
其次,扩展方法的注意事项
1.扩展方法是一种特殊的静态方法
2.扩展方法必须在静态类中定义
3.扩展方法的优先级低于同名的类方法
4.扩展方法只在特定的命名空间内有效
下面,上代码
<span style="font-size:18px;"><span style="font-size:18px;">using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { string strTest ="abc"; ; Console.Write(strTest.ToPascal()); //这里直接调用了我们的扩展方法 Console.Read(); } } /// <summary> ///拓展类,只要是静态的就可以 /// </summary> public static class ExtraStr { //在这里,参数里面的this就相当于指针,告诉程序,我要给哪一个类添加扩展方法 public static string ToPascal(this string s)//给字符串类提供拓展方法 { return s.Substring(0,1).ToUpper() + s.Substring(1).ToLower(); } } } </span></span>
扩展方法还有一个特点就是只在特定的命名空间内有效,(也就是注意事项的第4条)意思是说这个扩展方法写在哪个命名空间里面了,就只能在这个命名空间内使用,换命名空间了就不能调用到它了,需要先引用扩展方法所在的命名空间。这样也挺麻烦的。那怎么办呢?当然还有很简单很直接的方法,就是将扩展方法所在类的命名空间直接改成和扩展的类的命名空间一样就可以了。比如说,string类的命名空间是System,那么我们把我们写的那个扩展方法的类的命名空间也改成System。
这样,只要用到了string,那么就一定用到了System这个命名空间,那么相当于我们的扩展方法也引用进来了。
像string这样的类都是密封类,是不能被继承的。那么如果我们想要对它进行扩展的话就需要可以用扩展方法,大大的方便了我们。
相关文章推荐
- C#特性 扩展方法
- C#中的扩展方法详解
- C#基于Extension Method(扩展方法)获得文件大小的方法
- Jquery中扩展方法extend使用技巧
- 用扩展方法优化多条件查询(不定条件查询)
- 扩展方法浅谈
- MVC自定义HtmlHelper扩展方法.
- C#中的扩展方法
- C# 扩展方法奇思妙用
- C# 参数带this是什么意思(扩展方法)
- 扩展方法入门
- 扩展方法为我们带来了什么
- jQuery扩展命名空间(扩展方法)
- C# 扩展方法
- 重写ToString与实现扩展方法
- 向C#的String类添加按字节截取字符串的扩展方法
- [C# 基础知识系列]专题十五:全面解析扩展方法
- ASP.NET MVC学前篇之扩展方法、链式编程 推荐
- 综合应用WPF/WCF/WF/LINQ之二十:ListView控件中几个常用的扩展方法
- C#的扩展方法