您的位置:首页 > 其它

扩展方法学习总结

2015-08-16 23:11 330 查看
什么是扩展方法?怎么写扩展方法?下面将一一解答。

首先,用扩展方法的目标是对现有的类提供额外的方法以增强该类的功能。

比方说我们想把字符串的转换成第一个字母大写,其他的字母小写。现在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这样的类都是密封类,是不能被继承的。那么如果我们想要对它进行扩展的话就需要可以用扩展方法,大大的方便了我们。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  扩展方法