扩展方法是说,你原来的类,没有这么个方法,可是你想用这个方法,于是就出现扩展方法。
比如string这个类他没有为字符串添加双引号的方法,这个时候就能自己写扩展方法让string具有这个方法
var original = "ABCD"; var quoted = original.Quote(); Console.WriteLine(original); Console.WriteLine(quoted); public static class StringExtension { public static string Quote(this string str) { return $""{str}""; } }
有以下几点要注意的
1.必须要在一个静态类里面声明一个静态方法
2.静态方法的第一个参数必须是用this打头的,并且这个参数的类型是要依附的类的类型
3.在使用这个方法的时候,不需要为第一个参数提供实参,因为实例本身就是这个实参
再如下面这个栗子
namespace Trimming { static class DoubleExtension { public static double Round(this double value, int digits) { return Math.Round(value, digits); } } class Program { static void Main(string[] args) { var d = 12.3456789; var r1 = d.Round(2); var r2 = d.Round(4); Console.WriteLine(d); Console.WriteLine(r1); Console.WriteLine(r2); } } }