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();

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

扩展方法本质

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

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

相关推荐
良木生香16 小时前
【C++初阶】:C++类和对象(下):构造函数promax & 类型转换 & static & 友元 & 内部类 & 匿名对象 & 超级优化
c语言·开发语言·c++
5系暗夜孤魂16 小时前
系统越复杂,越需要“边界感”:从 Java 体系理解大型工程的可维护性本质
java·开发语言
无巧不成书021816 小时前
C语言零基础速通指南 | 1小时从入门到跑通完整项目
c语言·开发语言·编程实战·c语言入门·零基础编程·c语言速通
三雷科技17 小时前
使用 `dlopen` 动态加载 `.so` 文件
开发语言·c++·算法
wellc17 小时前
java进阶知识点
java·开发语言
听风吹等浪起17 小时前
用Python和Pygame从零实现坦克大战
开发语言·python·pygame
灰色小旋风17 小时前
力扣合并K个升序链表C++
java·开发语言
_MyFavorite_17 小时前
JAVA重点基础、进阶知识及易错点总结(28)接口默认方法与静态方法
java·开发语言·windows
取码网17 小时前
最新在线留言板系统PHP源码
开发语言·php
环黄金线HHJX.17 小时前
龙虾钳足启发的AI集群语言交互新范式
开发语言·人工智能·算法·编辑器·交互