无扩展方法:
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;
}
}