C# 扩展方法简介

2023-02-24 10:46:23

C# 中提供一个非常实用的供能,扩展方法(Extension method),通过扩展方法,我们可以对已有类型做自己想做的相关扩展。

扩展方法是通过额外的静态方法扩展现有的类型。

 

扩展方法是在一个静态类中定义的,并且扩展方法也要是静态方法,并且扩展方法的第一个参数为要扩展的类型,必须附加一个this关键字。

 

来看一个简单的扩展方法:

namespace MethodExtend
{
    static class ExtendMethodTest
    {
        public static void testExtendMethod(this int i)
        {
            Console.WriteLine("Extend Method Test");
        }

        public static void testExtendMethod(this int i, int index)
        {
            Console.WriteLine(-index);
        }

        public static void testExten2(this int i)
        {
            Console.WriteLine("extend method test");
        }
    }
}


 

上面这个类中的三个方法都是扩展方法,this int i表明要扩展的类型为int类型。this 修饰的是 int ,表明这个扩展方法是扩展的int 类型。

 

下面看一下扩展方法的引用:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace MethodExtend
{
    class Program
    {
        static void Main(string[] args)
        {
            int age = 25;
            age.testExtendMethod();

            Console.WriteLine("///");
            int t = 6;
            t.testExtendMethod(t);        
        }
    }
}


C#编译器会自动检测当前在作用域中的所有static类,找出为一个给定的类型定义的扩展方法。

如果你自己写的扩展方法的命名空间不在当前命名空间中, 只要自己添加相对应的命名空间就可以了。

 

如果扩展方法包含参数,就可以在要扩展的类型(即第一个参数)以后顺序的添加扩展方法对应的参数既可,在调用的时候填写相应参数,不过请记住,第一个参数为要扩展的类型,在填写实参的时候并没有这个参数。

  • 作者:watkins
  • 原文链接:https://blog.csdn.net/weixingstudio/article/details/6786791
    更新时间:2023-02-24 10:46:23