.NETFramework扩展方法基本常识简介

.NET Framework中有很多新奇的东西值得我们去深入的研究。这个世界上总是存在着很多奇妙的东西。然而,在这部分所介绍的扩展方法就是其中之一。从字面上看可能读者很难猜透.NET Framework扩展方法是什么意思。然而,看了下面的例子,就会感觉到非常的奇妙。#t#

成都创新互联于2013年成立,先为白水等服务建站,白水等地企业,进行企业商务咨询服务。为白水企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

  1. namespace ExtMethod
  2. {
  3. public class Class1
  4. {
  5. public String s = "bill";
  6. }
  7. public class Class2 : Class1
  8. {
  9. }
  10. public static class AnyClassName
  11. {
  12. public static String getName
    (this Class1 class1)
  13. {
  14. return class1.s + class1.s; 
  15. }
  16. }
  17. public partial class Form1 : Form
  18. {
  19. private void button1_Click
    (object sender, EventArgs e)
  20. {
  21. Class1 c = new Class1();
  22. MessageBox.Show(c.getName()); 
  23. Class2 c = new Class2();
  24. MessageBox.Show(c.getName()); 
  25. }
  26. }
  27. }

看到上面的代码,也许很多人会感到奇怪,在Class1和Class2中并没有getName方法,怎么在调用时出来个getName方法呢?实际上,这就是.NET Framework扩展方法的用法,从本质上说,扩展方法就是将静态方法(必须声明成static)插入到某个类和其子类中(也就是说,在这些类中可以使用在外部定义的静态方法)。那么要往哪个类中插入呢?这就要在定义静态方法时指定了。大家可以看看getName方法的第一个参数,使用了this关键字,这就表明这个方法是一个扩展方法,后面的类型就是要插入该方法的类,在本例中是Class1,也就是说在Class1及其子类中都可以使用getName方法。上面的调用代码也相当于下面的代码:

 
 
 
  1. Class2 c = new Class2();
  2. MessageBox.Show(AnyClass
    Name.getName(c));

但使用c.getName可能会更好一些,而且也降低了对静态方法所在的类(AnyClassName)的依赖性。

在使用.NET Framework扩展方法时应注意以下几点:

1. 扩展方法所在的类名可以是任意合法的类名。

2. 扩展方法所在的类必须和使用扩展方法的代码在同一个命名空间里,否则无法编译通过。

3. 在本例中,Class1和Class2只能声明成public,因为AnyClassName被声明为public。如果AnyClassName不加修饰符,Class1和Class2也可以不加修饰符,当然,也可以被声明为public。也就是说,Class1和Class2必须有比AnyClassName具有更强的访问性。如下面代码所示:

 
 
 
  1. class Class1
  2. {
  3. public String s = "bill";
  4. }
  5. class Class2 : Class1
  6. {
  7. }
  8. static class AnyClassName 
  9. // 这时如果前面加public是无法编
    译通过的。
  10. {
  11. public static String getName
    (this Class1 class1)
  12. {
  13. return class1.s + class1.s; 
  14. }
  15. }

4. 如果在Class1或Class2中已经有getName方法了,那么Class1或Class2中的getName优先级更高。也就是说,扩展方法是无法覆盖原类中的同名(参数名和类型也相同)的方法的。

.NET Framework扩展方法尤其在很多类需要同样的方法,而这些类又无法继承其它类时特别有用。当然,在要对某个类进行扩展,但我们并没有源代码时,扩展方法也可以派上用场。

当前名称:.NETFramework扩展方法基本常识简介
分享链接:http://www.hantingmc.com/qtweb/news9/84809.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联