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

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.lryc.cn/news/507216.html

相关文章:

  • 金碟中间件-AAS-V10.0安装
  • sql server 查询对象的修改时间
  • Qt之串口设计-线程实现(十二)
  • 探索 Seaborn Palette 的奥秘:为数据可视化增色添彩
  • Linux创建普通用户和修改主机名
  • 在 Spring Boot 3 中实现基于角色的访问控制
  • 二八(vue2-04)、scoped、data函数、父子通信、props校验、非父子通信(EventBus、provideinject)、v-model进阶
  • 配置PostgreSQL用于集成测试的步骤
  • 【ComfyUI + 铅笔素描画风】艺术家DaTou发布了的彩色铅笔素描风格生成(真实感超强)
  • Unity-Editor扩展GUI基本实现一个可拖拉放的格子列表
  • 后摩尔定律时代,什么将推动计算机性能优化的发展?
  • SQL进阶技巧:如何计算商品需求与到货队列表进出计划?
  • linux普通用户使用sudo不需要输密码
  • Mac配置 Node镜像源的时候报错解决办法
  • R语言的数据结构-数据框
  • 分布式全文检索引擎ElasticSearch-数据的写入存储底层原理
  • react中实现导出excel文件
  • 有监督学习 vs 无监督学习:机器学习的两大支柱
  • c4d动画怎么导出mp4视频,c4d动画视频格式设置
  • 差分矩阵(Difference Matrix)与累计和矩阵(Running Sum Matrix)的概念与应用:中英双语
  • 全面解析 Golang Gin 框架
  • 全脐点曲面当且仅当平面或者球面的一部分
  • CSS学习记录18
  • 实验13 C语言连接和操作MySQL数据库
  • 90度Floating B to B 高速连接器信号完整性仿真
  • 【踩坑】Pytorch与CUDA版本的关系及安装
  • 信息隐藏 数字图像空域隐写与分析技术的实现
  • halcon单相机+机器人*眼在手外标定心得
  • pytest入门十:配置文件
  • 基于Clinical BERT的医疗知识图谱自动化构建方法,双层对比框架