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

c# 什么是扩展方法

官方解释        

        扩展方法使你能够向现有类型“添加”方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。 扩展方法是一种静态方法,但可以像扩展类型上的实例方法一样进行调用。 对于用 C#、F# 和 Visual Basic 编写的客户端代码,调用扩展方法与调用在类型中定义的方法没有明显区别。

        最常见的扩展方法是 LINQ 标准查询运算符,它将查询功能添加到现有的 System.Collections.IEnumerable 和 System.Collections.Generic.IEnumerable<T> 类型。 若要使用标准查询运算符,请先使用 using System.Linq 指令将它们置于范围中。 然后,任何实现了 IEnumerable<T> 的类型看起来都具有 GroupBy、OrderBy、Average 等实例方法。 在 IEnumerable<T> 类型的实例(如 List<T> 或 Array)后键入“dot”时,可以在 IntelliSense 语句完成中看到这些附加方法。

        扩展方法定义的语法

public static 返回值类型 方法名(this 扩展的数据类型 参数名)

{

}

注意  扩展方法所在的类一定是 static 的

示例:下面是给 string 类型的增加了一个将字符串转成int不会出现异常的扩展方法


/// <summary>
/// 字符串扩展方法
/// </summary>
public static class StringExtension
{/// <summary>/// string 转 int/// </summary>/// <param name="value"></param>/// <returns>转换失败返回int最小值,否则返回对应的值</returns>public static int ToInt(this string value){int val = int.MinValue;int.TryParse(value, out val);return val;}
}

调用

int age = "20".ToInt();

注意 如果发现调用不了应该是没有引用扩展方法的命名空间

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Oracle-OracleConnector
  • Linux应用层开发(7):网络编程
  • html+css+js网页设计 找法网2个页面(带js)ui还原度百分之90
  • C语言实现UDP广播
  • 力扣227题基本计算器II(Python实现)
  • Kali Linux——网络安全的瑞士军刀
  • 登录页滑块验证图
  • Windows下编译安装PETSc
  • 简单介绍BTC的Layer2项目RGB
  • Java面试篇(JVM相关专题)
  • C#使用NPOI进行Excel和Word文件处理(二)
  • 房产中介小程序
  • C语言——结构体与共用体
  • Docker 网络代理配置及防火墙设置指南
  • 【云原生之kubernetes实战】在k8s环境下部署Note Mark笔记工具
  • Android框架之Volley
  • Bootstrap JS插件Alert源码分析
  • mysql 数据库四种事务隔离级别
  • oldjun 检测网站的经验
  • SAP云平台里Global Account和Sub Account的关系
  • 大快搜索数据爬虫技术实例安装教学篇
  • 订阅Forge Viewer所有的事件
  • 给github项目添加CI badge
  • 工作踩坑系列——https访问遇到“已阻止载入混合活动内容”
  • 学习笔记TF060:图像语音结合,看图说话
  • 一些关于Rust在2019年的思考
  • No resource identifier found for attribute,RxJava之zip操作符
  • 3月27日云栖精选夜读 | 从 “城市大脑”实践,瞭望未来城市源起 ...
  • LevelDB 入门 —— 全面了解 LevelDB 的功能特性
  • 宾利慕尚创始人典藏版国内首秀,2025年前实现全系车型电动化 | 2019上海车展 ...
  • # Java NIO(一)FileChannel
  • #define,static,const,三种常量的区别
  • #laravel部署安装报错loadFactoriesFrom是undefined method #
  • $.type 怎么精确判断对象类型的 --(源码学习2)
  • (Charles)如何抓取手机http的报文
  • (代码示例)使用setTimeout来延迟加载JS脚本文件
  • (二)Eureka服务搭建,服务注册,服务发现
  • (附源码)spring boot校园健康监测管理系统 毕业设计 151047
  • (亲测)设​置​m​y​e​c​l​i​p​s​e​打​开​默​认​工​作​空​间...
  • (十六)视图变换 正交投影 透视投影
  • (一)appium-desktop定位元素原理
  • (转)socket Aio demo
  • (转)重识new
  • **《Linux/Unix系统编程手册》读书笔记24章**
  • .[hudsonL@cock.li].mkp勒索加密数据库完美恢复---惜分飞
  • .bat批处理(六):替换字符串中匹配的子串
  • .NET Framework .NET Core与 .NET 的区别
  • .NET设计模式(11):组合模式(Composite Pattern)
  • @Autowired标签与 @Resource标签 的区别
  • @RequestParam @RequestBody @PathVariable 等参数绑定注解详解
  • @serverendpoint注解_SpringBoot 使用WebSocket打造在线聊天室(基于注解)
  • [ 渗透测试面试篇 ] 渗透测试面试题大集合(详解)(十)RCE (远程代码/命令执行漏洞)相关面试题
  • [ 隧道技术 ] cpolar 工具详解之将内网端口映射到公网
  • []AT 指令 收发短信和GPRS上网 SIM508/548
  • [2016.7 test.5] T1