C# 扩展方法

扩展方法能够向现有类型添加方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。 扩展方法是LINQ的基础,许多LINQ方法(如Where、Select等)都是通过扩展方法实现的。

步骤

1、创建一个静态类

2、将静态方法定义为扩展方法,其中扩展方法的第一个参数指定了适用扩展方法的类型。在第一个参数之前加上this 修饰符。

实例一:

cs 复制代码
public static class MyExtensions
{
    public static void SayHello(this string str)
    {
        Console.WriteLine("Hello World!");
    }
}

string human = "abc";
human.SayHello();

实例二

cs 复制代码
// 定义扩展方法
public static class StringExtensions
{
    public static bool IsNullOrEmpty(this string str)
    {
        return string.IsNullOrEmpty(str);
    }
    
    public static string Reverse(this string input)
    {
        char[] chars = input.ToCharArray();
        Array.Reverse(chars);
        return new string(chars);
    }
}

// 使用扩展方法
string text = "Hello";
bool empty = text.IsNullOrEmpty(); // 调用扩展方法
string reversed = text.Reverse();  // 调用另一个扩展方法

特点

  1. 静态类中定义:扩展方法必须在静态类中定义

  2. this关键字 :第一个参数前使用this关键字

  3. 命名空间:使用时需要引入包含扩展方法的命名空间

  4. 优先级:如果类型本身有同名方法,实例方法优先级高于扩展方法

注意事项

  1. 扩展方法不能访问私有或受保护成员

  2. 过度使用可能导致代码难以理解和维护

  3. 与实例方法同名时,实例方法优先

  4. 不支持扩展属性、事件等,只能扩展方法

相关推荐
Lost of 程序猿40 分钟前
船岸数据同步链路实战:SendFlag、单调版本号与断网三天后的续传
后端·c#·asp.net
cjp56018 小时前
012.UG二次开发,UG管道服务器与WPF管道通讯,传输JSON数据
c#
jiushidt20 小时前
ArcGIS Pro Add‑in 打包流程详解
arcgis·c#·.net·arcgispro
geovindu2 天前
CSharp: Observer Pattern
开发语言·后端·观察者模式·设计模式·c#·.netcore·行为模式
软件黑马王子2 天前
20.Resources资源加载:基本实现
开发语言·前端框架·c#
张人玉2 天前
基于 C# / .NET 8 + Windows Forms + SQLite 的桌面银行业务演示系统——华夏示范银行管理系统
windows·sqlite·c#·.net
1314lay_10072 天前
C#调用Sql Server存储过程,并且使用传入表结构
数据库·经验分享·笔记·sqlserver·c#
慧都小妮子2 天前
.NET 报表控件选型对比:Stimulsoft 与 FastReport 怎么选
c#·.net·报表开发·数据可视化·报表控件·报表引擎选型
1314lay_10072 天前
C#调用Sql Server存储过程,有返回值的
数据库·sqlserver·c#
我是唐青枫2 天前
C#.NET PInvoke 深入解析:封送、内存布局与原生互操作实战
开发语言·c#·.net