当前位置: 首页 > article >正文

C#—扩展方法

扩展方法

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

有↓箭头的是扩展方法

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

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

示例

先声明一个string的扩展方法

public static class StringExtension
{
    public static voidCountLines(this string str)
    {
        Console.WriteLine(str);
    }
}

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

string text = "Csharp";
int lineCount = text.CountLines(); // 打印 Csharp

扩展方法的基本原则:

  • C#只支持扩展方法,不支持扩展属性、扩展事件、扩展操作符等。
  • 扩展方法(第一个参数前面是this的方法)必须在非泛型的静态类中声明,扩展方法必须有一个参数,而且只有第一个参数使用this标记。
  • C#编译器查找静态类中的扩展方法时,要求这些静态类本身必须具有文件作用域。
  • C#编译要求“导入”扩展方法。(静态方法可以任意命名,C#编译器在寻找方法时,需要花费时间进行查找,需要检查文件作用域中的所有的静态类,并扫描它们的所有静态方法来查找一个匹配)
  • 多个静态类可以定义相同的扩展方法。
  • 用一个扩展方法扩展一个类型时,同时也扩展了派生类型。


http://www.kler.cn/a/445719.html

相关文章:

  • 中小学教室多媒体电脑安全登录解决方案
  • Soul Android端稳定性背后的那些事
  • 智能化测绘装备的自主研发与市场应用
  • 向量的叉乘+Vector3补充+四元数
  • Qt之CAN设计(十三)
  • R语言在数量生态学中的应用
  • go mod tidy 命令
  • 《算法SM2》题目
  • 【Python爬虫实战】深入解析 Scrapy 管道:数据清洗、验证与存储的实战指南
  • VSCode 配置远程连接免密登录
  • YOLOv8目标检测(七)_AB压力测试
  • 【QT实战の心情笔记】
  • //需求 定义方式实现随机产生一个5位的验证码 //验证方式: 长度为5位, 前四位是大写字母或者小写字母,最后一位是数字
  • 【华为OD-E卷-获得完美走位 100分(python、java、c++、js、c)】
  • 进行科技查新对避免重复申请专利有何帮助?
  • 图漾相机-ROS1_SDK_ubuntu版本编译(新版本)
  • 【HarmonyOS之旅】DevEco Studio的安装与环境配置
  • Intent的匹配规则
  • Springboo 和ORM整合
  • 基于master开发了一个feature/new_fun分支,但是开发过程中origin/master发生更新了,此时应该怎么做?