“扩展方法使您能够向现有类型“添加”方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。” 这是msdn上说的,也就是你可以对String,Int,DataRow,DataTable等这些类型的基础上增加一个或多个方法,使用时不需要去修改或编译类型本身的代码。 /// 扩展方法 /// 1.0 扩展方法的第一个参数表示的是扩展的类型 要加上this开头 /// 2.0 扩展方法本身是一个静态方法 /// 3.0 扩展方法必须放在静态类中 /// 4.0 扩展方法可以和实例方法构成方法重载,但是实力方法的调用优先级高于扩展方法 /// 5.0 定义在父类的扩展方法可以被子类使用 下列是扩展方法: public static string FmtDateTime(this DateTime now) { return now.ToString("yyyy-MM-dd"); } /// <summary> /// 扩展的 /// </summary> /// <param name="str"></param> /// <returns></returns> public static string ToLower(this string str,string s) { return str.ToLower() + "来自扩展"+s; } public static string GetPigName(this Pig pig) { return pig.Name + "来自扩展"; } public static void Say(this Pig pig) { Console.WriteLine(pig.ToString()); } 那么,可以这样使用扩展方法: #region 7.0 扩展方法 static void c07ExMethod() { DateTime time = DateTime.Now; ////在类中调用静态方法 //Console.WriteLine(ExtMethodHelper.FmtDateTime(time)); //扩张方法,语法糖(是给VS编译器用的,属于编译器语法,不属于C#语法) //本质上还是通过ExtMethodHelper.FmtDateTime()方法 Console.WriteLine(time.FmtDateTime()); //2.0 字符串的小写扩展方法与字符串本身的实例方法的优先级 string str = "AB"; Console.WriteLine(str.ToLower("扩展")); //3.0 扩展方法扩展子类,子类一样可以使用 smallPig sm = new smallPig() { Name = "小猪继承自老猪" }; Console.WriteLine(sm.GetPigName()); } #endregion
时间: 2024-10-06 00:16:24