asp.net中CSharpThinking扩展方法分析
本文实例讲述了asp.net中CSharpThinking扩展方法。分享给大家供大家参考。具体分析如下:
一、演变
①扩展方法特征
1)必须在一个静态方法中。
2)至少有一个参数。
3)第一个参数必须附加this关键字作为前缀。
4)第一个参数不能有其他任何修饰符(如out,ref)。
5)第一个参数的类型不能是指针。
6)如果扩展方法名称与类型的方法一样(如都命名为ToString),则只有类型的方法会被调用,而扩展方法的不会,这是一个优先级问题。
②扩展方法与普通静态方法的比较
C#2时对一个类进行扩展而又不能应用继承方式时,只能编写稍微“丑陋”的静态方法。C#3允许我们更改静态类,来假装方法是类与生俱来的。
publicstaticvoidDemo1() { //C#2普通调用方式 stringLog2=ExtensionCompare.GetLogError("C#2普通静态方式"); Console.WriteLine(Log2);
//C#3扩展方法调用方式 stringLog3="C#3扩展方法方式".ToLogError(); Console.WriteLine(Log3);
Console.ReadLine(); } ///<summary> ///C#2常规静态方法扩展 ///</summary> ///<paramname="loginfo">格式化信息</param> ///<returns></returns> publicstaticstringGetLogError(stringloginfo) { returnstring.Format("ThisisC#2style:{0}",loginfo); } ///<summary> ///C#3用扩展方法实现的string类型扩展 ///</summary> ///<paramname="loginfo"></param> ///<returns></returns> publicstaticstringToLogError(thisstringloginfo) { returnstring.Format("ThisisC#3style:{0}",loginfo); }