C#中的扩展方法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#中的扩展方法相关的知识,希望对你有一定的参考价值。
扩展方法
向现有的类型动态添加方法,不需要创建新的派生类型,重新编译或修改原始类型的源代码
扩展方法是一种特殊的静态方法,调用方式和普通实例方法一样
?扩展方法使用例子
public static void PrintString(this String val)
{
Console.WriteLine(val);
}
var a = "aaa";
a.PrintString();
Console.ReadKey();
但通过我们上面的代码,就给string类型"扩展"了一个PrintString方法
(1)先决条件
<1>扩展方法必须在一个非嵌套、非泛型的静态类中定义
<2>扩展方法必须是一个静态方法
<3>扩展方法至少要有一个参数
<4>第一个参数必须附加this关键字作为前缀
<5>第一个参数不能有其他修饰符(比如ref或者out)
<6>第一个参数不能是指针类型
(2)注意事项
<1>跟前面提到的几个特性一样,扩展方法只会增加编译器的工作,不会影响性能(用继承的方式为一个类型增加特性反而会影响性能)
<2>如果原来的类中有一个方法,跟你的扩展方法一样(至少用起来是一样),那么你的扩展方法奖不会被调用,编译器也不会提示你
<3>扩展方法太强大了,会影响架构、模式、可读性等等等等....
自己写的一个例子
public static class father
{
public static int Speak(this int i) {
Console.WriteLine( "this is a test{0}",i);
return i+20;
}
}
int ii = 10;
Console.WriteLine(ii.Speak());
!--more-->
以上是关于C#中的扩展方法的主要内容,如果未能解决你的问题,请参考以下文章