C#—扩展方法

扩展方法

扩展方法是C#中一种特殊的静态方法,它定义在一个静态类中,但是可以像实例方法一样被调用,使得代码看起来更为直观和易于阅读。扩展方法允许你在不修改原始类的情况下,添加新的方法到现有的类型中。

有↓箭头的是扩展方法

扩展方法的定义需要满足以下条件:

  • 它必须在一个静态类中定义。
  • 它必须是一个静态方法。
  • 它的第一个参数是用 this 关键字修饰的,指定了该方法作用于哪个类型。
  • 第一个参数的类型必须是要扩展的类型,或者是从该类型派生的类型。

示例

先声明一个string的扩展方法

cs 复制代码
public static class StringExtension
{
    public static voidCountLines(this string str)
    {
        Console.WriteLine(str);
    }
}

使用这个扩展方法的示例如下:

cs 复制代码
string text = "Csharp";
int lineCount = text.CountLines(); // 打印 Csharp

扩展方法的基本原则:

  • C#只支持扩展方法,不支持扩展属性、扩展事件、扩展操作符等。
  • 扩展方法(第一个参数前面是this的方法)必须在非泛型的静态类中声明,扩展方法必须有一个参数,而且只有第一个参数使用this标记。
  • C#编译器查找静态类中的扩展方法时,要求这些静态类本身必须具有文件作用域。
  • C#编译要求"导入"扩展方法。(静态方法可以任意命名,C#编译器在寻找方法时,需要花费时间进行查找,需要检查文件作用域中的所有的静态类,并扫描它们的所有静态方法来查找一个匹配)
  • 多个静态类可以定义相同的扩展方法。
  • 用一个扩展方法扩展一个类型时,同时也扩展了派生类型。
相关推荐
空空kkk1 分钟前
SpringMVC——拦截器
java·数据库·spring·拦截器
爱学测试的雨果2 分钟前
收藏!软件测试面试题
开发语言·面试·职场和发展
文涛是个小白呀5 分钟前
Java集合大调研
java·学习·链表·面试
我也爱吃馄饨12 分钟前
写的webpack插件如何适配CommonJs项目和EsModule项目
java·前端·webpack
鹿衔`16 分钟前
通过Flink 1.19 客户端实现Flink集群连接 Kafka 基础测试报告
c#·linq
Seven9719 分钟前
剑指offer-43、左旋转字符串
java
安然无虞29 分钟前
JMeter性能测试工具·下
开发语言·测试工具·jmeter
4***R24030 分钟前
C++在音视频处理中的库
开发语言·c++·音视频
梵得儿SHI34 分钟前
(第七篇)Spring AI 基础入门总结:四层技术栈全景图 + 三大坑根治方案 + RAG 进阶预告
java·人工智能·spring·springai的四大核心能力·向量维度·prompt模板化·向量存储检索
i***279541 分钟前
Spring boot 3.3.1 官方文档 中文
java·数据库·spring boot