C#扩展方法

2021-01-21 01:12

阅读:701

标签:一个   reac   pre   turn   方法   rgs   图片   round   false   

扩展方法(this参数)

  • 方法必须是公有的、静态的,即被public、static所修饰
  • 方法形参列表第一个,由this修饰
  • 必须由一个静态类(一般类名为SomeTypeExtension)来统一收纳对SomeType类型的扩展方法
  • 举例:LINQ方法

没有扩展方法:

class Program
{
    static void Main(string[] args)
    {
        double x = 3.14159;
        // double 类型本身没有 Round 方法,只能使用 Math.Round。
        double y = Math.Round(x, 4);
        Console.WriteLine(y);
    }
}

有扩展方法后:

class Program
{
    static void Main(string[] args)
    {
        double x = 3.14159;
        // double 类型本身没有 Round 方法,只能使用 Math.Round。
        double y = x.Round(4);
        Console.WriteLine(y);
    }
}

static class DoubleExtension
{
    public static double Round(this double input,int digits)
    {
        return Math.Round(input, digits);
    }
}

技术图片

 

 

 LINQ实例

 

class Program
{
    static void Main(string[] args)
    {
        var myList = new Listint>(){ 11, 12, 9, 14, 15 };
        //bool result = AllGreaterThanTen(myList);
        // 这里的 All 就是一个扩展方法
        bool result = myList.All(i => i > 10);
        Console.WriteLine(result);
    }

    static bool AllGreaterThanTen(Listint> intList)
    {
        foreach (var item in intList)
        {
            if (item 10)
            {
                return false;
            }
        }

        return true;
    }
}

 

All 第一个参数带 this,确实是扩展方法。

 

技术图片

C#扩展方法

标签:一个   reac   pre   turn   方法   rgs   图片   round   false   

原文地址:https://www.cnblogs.com/Mr-Prince/p/12116699.html


评论


亲,登录后才可以留言!