码迷,mamicode.com
首页 > Windows程序 > 详细

C#中的扩展方法

时间:2016-03-19 15:56:46      阅读:223      评论:0      收藏:0      [点我收藏+]

标签:

扩展方法

向现有的类型动态添加方法,不需要创建新的派生类型,重新编译或修改原始类型的源代码

扩展方法是一种特殊的静态方法,调用方式和普通实例方法一样



?扩展方法使用例子

  1. public static void PrintString(this String val)
  2.   {
  3.   Console.WriteLine(val);
  4.   }
  1. var a = "aaa";
  2. a.PrintString();
  3. Console.ReadKey();

但通过我们上面的代码,就给string类型"扩展"了一个PrintString方法

(1)先决条件

  <1>扩展方法必须在一个非嵌套、非泛型的静态类中定义

  <2>扩展方法必须是一个静态方法

  <3>扩展方法至少要有一个参数

  <4>第一个参数必须附加this关键字作为前缀

   <5>第一个参数不能有其他修饰符(比如ref或者out)

    <6>第一个参数不能是指针类型

(2)注意事项

  <1>跟前面提到的几个特性一样,扩展方法只会增加编译器的工作,不会影响性能(用继承的方式为一个类型增加特性反而会影响性能)

  <2>如果原来的类中有一个方法,跟你的扩展方法一样(至少用起来是一样),那么你的扩展方法奖不会被调用,编译器也不会提示你

  <3>扩展方法太强大了,会影响架构、模式、可读性等等等等....

自己写的一个例子
  1. public static class father
  2. {
  3. public static int Speak(this int i) {
  4. Console.WriteLine( "this is a test{0}",i);
  5. return i+20;
  6. }
  7. }
  1. int ii = 10;
  2. Console.WriteLine(ii.Speak());
技术分享技术分享
 




C#中的扩展方法

标签:

原文地址:http://www.cnblogs.com/weloveshare/p/5295130.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!