无扩展方法:
class Program{static void Main(string[] args){double x = 3.14159;double y = Math.Round(x, 4);Console.WriteLine(y);}}
有扩展方法后:
class Program{static void Main(string[] args){double x = 3.14159;double y = x.Round(4);Console.WriteLine(y);}}static class DoubleExtension{public static double Round(this double input, int digits){double result = Math.Round(input, digits);return result;}}
当我们无法修改类型源码时,可以通过扩展方法为目标数据类型追加方法。
LINQ 也是扩展方法的一大体现。
LINQ 实例
class Program{static void Main(string[] args){List<int> myList = new List<int>() { 11, 12, 13, 14, 15 };bool result = AllGreaterThanTen(myList);Console.WriteLine(result);}static bool AllGreaterThanTen(List<int> intList){foreach (var item in intList){if (item<=10){return false;//提早return-}}return true;}}
使用Linq:(using System.Linq;)
class Program{static void Main(string[] args){List<int> myList = new List<int>() { 9, 12, 13, 14, 15 };//bool result = AllGreaterThanTen(myList);// 这里的 All 就是一个扩展方法bool result = myList.All(i => i > 10);Console.WriteLine(result);}static bool AllGreaterThanTen(List<int> intList){foreach (var item in intList){if (item<=10){return false;//提早return-}}return true;}}
