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

windows C#-如何实现和调用自定义扩展方法

本文将介绍如何为任意 .NET 类型实现自定义扩展方法。 客户端代码可以使用扩展方法。 客户端项目必须引用包含它们的程序集。 客户端项目必须添加一个 using 指令,该指令指定在其中定义扩展方法的命名空间。

定义和调用扩展方法:

  • 定义包含扩展方法的静态类。 该类不能嵌套在另一个类型内,并且必须对客户端代码可见。 
  • 将扩展方法实现为静态方法,并且使其可见性至少与所在类的可见性相同。
  • 此方法的第一个参数指定方法所操作的类型;此参数前面必须加上 this 修饰符。
  • 在调用代码中,添加 using 指令,用于指定包含扩展方法类的命名空间。
  • 将方法作为类型的实例方法调用。

第一个参数并不是由调用代码指定,因为它表示要在其上应用运算符的类型,并且编译器已经知道对象的类型。 你只需通过 n 提供形参 2 的实参。

以下示例实现 CustomExtensions.StringExtension 类中名为 WordCount 的扩展方法。 此方法对 String 类进行操作,该类指定为第一个方法参数。 将 CustomExtensions 命名空间导入应用程序命名空间,并在 Main 方法内部调用此方法。

using CustomExtensions;

string s = "The quick brown fox jumped over the lazy dog.";
// Call the method as if it were an
// instance method on the type. Note that the first
// parameter is not specified by the calling code.
int i = s.WordCount();
System.Console.WriteLine("Word count of s is {0}", i);


namespace CustomExtensions
{
    // Extension methods must be defined in a static class.
    public static class StringExtension
    {
        // This is the extension method.
        // The first parameter takes the "this" modifier
        // and specifies the type for which the method is defined.
        public static int WordCount(this string str)
        {
            return str.Split(new char[] {' ', '.','?'}, StringSplitOptions.RemoveEmptyEntries).Length;
        }
    }
}

重载解析首选类型本身定义的实例或静态方法,而不是扩展方法。 扩展方法无法访问扩展类中的任何隐私数据。 


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

相关文章:

  • 基于Python django的音乐用户偏好分析及可视化系统设计与实现
  • CSS语言的数据类型
  • 逆波兰表达式求值(力扣150)
  • 目标跟踪算法发展简史
  • 3D Vision--计算点到平面的距离
  • 最大矩阵面积问题
  • 利用编程获得money?
  • HP服务器开启性能模式
  • 访问控制列表ACL
  • MyBatis框架的入门
  • websocket 服务 pinia 全局配置
  • 【后端面试总结】线程间通信的方法、特点与实现
  • GLB格式转换为STL格式
  • MAC虚拟机上安装WDA环境
  • [创业之路-196]:华为成功经验的总结与教训简单总结
  • Docker 安装 Seata2.0.0 (快速配置)
  • Django基础 - 01入门简介
  • .Net Core配置使用Log4Net日志记录
  • 梳理你的思路(从OOP到架构设计)_认识EIT造形与内涵
  • 编译glibc
  • 【YashanDB知识库】如何处理yasql输入交互模式下单行字符总量超过限制4000字节
  • 商业智能汽车充电桩 功能介绍
  • SpringBoot整合MybatisPlus报错Bean不存在:NoSuchBeanDefinitionException
  • C#高级:Winform桌面开发中TreeView的基础例子
  • PH热榜 | 2024-12-17
  • 【多维 DP】力扣2400. 恰好移动 k 步到达某一位置的方法数目