码迷,mamicode.com
首页 > Windows程序 > 详细

C#扩展方法

时间:2019-12-29 21:54:02      阅读:103      评论:0      收藏:0      [点我收藏+]

标签:一个   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 List<int>(){ 11, 12, 9, 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 true;
    }
}

 

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

 

技术图片

C#扩展方法

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

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!