扩展方法必须在非泛型静态类中定义

转自:http://blog.sina.com.cn/s/blog_6fbef9e00100o6zu.html


扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用。
扩展方法被定义为静态方法,但它们是通过实例方法语法进行调用的。 它们的第一个参数指定该方法作用于哪个类型,并且该参数以 this 修饰符为前缀。
扩展方法的要求如下:
1 第一个参数是要扩展或者要操作的类型,这称为"被扩展的类型"
2 为了指定扩展方法,要在被扩展的类型名称前面附加this修饰符
3 要将方法作为一个扩展方法来访问,要用using指令导入扩展类型的命名空间,或者使扩展类型和调用代码在同一个命名空间中.


如果扩展方法的签名已经和被扩展类型中的一个签名匹配扩展方法永远不会得到调用,除非是作为一个普通的静态方法
扩展方法无法帮助我们建立一个清楚的版本控制机制,因为一旦在被扩展的类型中添加一个匹配的签名,就会将现有的扩展方法覆盖,而且不会发出任何警告. 如果对被扩展的类的源代码没有控制权,这个问题还会变得更加突出 (猫的理解是很容易出现匹配冲突所导致的结果吧)

//扩展方法必须在非泛型静态类中定义 
public static class qzwtest 
{ 
//扩展方法 
public static string[] qzw(this string str) 
{ 
return str.Split(new char[] { ' ', ',' }); 
} 
} 

class Program 
{ 
static int Main() 
{ 

string testStr = "钱卓文 is 喵喵,贤静"; 
//调用扩展方法 
string[] testArray = testStr.qzw(); 
foreach (string s in testArray) 
{ 
Console.WriteLine(s); 
} 

Console.ReadKey(); 
return 0; 
} 
} 


  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值