c#扩展方法

扩展方法基本概念

为现有非静态的变量类型 添加新方法

作用

提升程序扩展性

不需要在对象中重新写方法

不需要继承来添加方法

为别人封装的类型写额外的方法

特点

写在静态类中

一定是个静态函数

第一个参数为扩展目标

第一个参数用this修饰

语法

访问修饰符 static 返回值 函数名(this 扩展类名 参数名 参数类型 参数名 参数类型)

cs 复制代码
static class Tools{    
    public static void SpeakValue(this int value)
    {
     Console.WriteLine("为int扩展的方法"+value);
    }
    public static void SpeakStringInfo(this string str,string str2,string str3)
    {
        Console.WriteLine("为string扩展的方法");
        Console.WriteLine("调用");
        Console.WriteLine("传的参数"+str2 + str3);
    }
    public static void Fun2(this Test t)
    {
        Console.WriteLine("为Test的扩展方法");
    }
}

public static void SpeakValue(this int value)

是为int扩展了一个成员方法

成员方法是需要实例化对象后才能使用的

value代表 使用该方法的实例化对象

使用逻辑

在任意一个静态类中写方法为系统自带的或者自己写的类型(非静态的变量类型)增加新方法

为自定义的类型扩展方法

cs 复制代码
class Test
{
    public int i = 10;
    public void Fun1()
    {
        Console.WriteLine("123");

    }
    public void Fun2()
    {
        Console.WriteLine("44");

    }  
}

扩展方法的使用

cs 复制代码
int i = 10;
i.SpeakValue();

string str = "000";
str.SpeakStringInfo("11", "22");
Test t = new Test();
t.Fun2();

如果扩展方法和原方法重合,那么调用的是原方法

扩展方法本质

扩展方法在编译后会被编译成普通的静态方法调用。

因此,扩展方法并不会真正改变类型本身,它只是一种语法糖,让代码更简洁、更具可读性。

相关推荐
雨落倾城夏未凉3 天前
第四章c#方法-参数数组和可选参数(16)
后端·c#
唐青枫4 天前
线程不是越多越快:C#.NET Thread 生命周期、同步与后台工作线程实战
c#·.net
唐青枫5 天前
别只会反射:C#.NET Emit 动态生成代码实战详解
c#·.net
咕白m6255 天前
.NET 环境下 Word 超链接批量提取方案
c#·.net
用户91721561902115 天前
C# 通信协议增量解析:用状态机处理半包和粘包
c#
小码编匠6 天前
C# 工控上位机必备:数据转换工具类与十个核心模块
后端·c#·.net
唐青枫8 天前
别再乱用 StartNew:C#.NET TaskFactory 任务调度实战详解
c#·.net
Artech8 天前
[MAF预定义的AIContextProvider-03]ChatHistoryMemoryProvider——赋予Agent从经验中学习的能力
ai·c#·agent·memory·maf
Scout-leaf10 天前
C#摸鱼实录——IoC与DI案例详解
c#
咕白m62510 天前
使用 C# 在 Excel 中应用多种字体样式
后端·c#