全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

C#扩展方法实例分析

本文实例讲述了C#扩展方法。分享给大家供大家参考,具体如下:

扩展方法

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

如果我们有这么一个需求,将一个字符串的第一个字符转化为大写,第二个字符到第n个字符转化为小写,其他的不变,那么我们该如何实现呢?

不使用扩展方法:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ExtraMethod
{
  //抽象出静态StringHelper类
  public static class StringHelper
  {
    //抽象出来的将字符串第一个字符大写,从第一个到第len个小写,其他的不变的方法
    public static string ToPascal(string s,int len)
    {
      return s.Substring(0, 1).ToUpper() + s.Substring(1, len).ToLower() + s.Substring(len + 1);
    }
  }
  class Program
  {
    static void Main(string[] args)
    {
      string s1 = "aSDdAdfGDFSf";
      string s2 = "sbfSDffsjG";
      Console.WriteLine(StringHelper.ToPascal(s1,3));
      Console.WriteLine(StringHelper.ToPascal(s2, 5));
    }
  }
}

使用扩展方法:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ExtraMethod
{
  class Program
  {
    static void Main(string[] args)
    {
      string s1 = "aSDdAdfGDFSf";
      string s2 = "sbfSDffsjG";
      Console.WriteLine(s1.ToPascal(3));
      Console.WriteLine(s2.ToPascal(5));
    }
  }
  //扩展类,只要是静态就可以
  public static class ExtraClass
  {
    //扩展方法--特殊的静态方法--为string类型添加特殊的方法ToPascal
    public static string ToPascal(this string s, int len)
    {
      return s.Substring(0, 1).ToUpper() + s.Substring(1, len).ToLower() + s.Substring(len + 1);
    }
  }
}

通过上面两种方法的比较:

    1.代码在访问ToPascal这样的静态方法时更为便捷。用起来就像是被扩展类型确实具有该实例方法一样。
    2.扩展方法不改变被扩展类的代码,不用重新编译、修改、派生被扩展类

定义扩展方法

    1.定义一个静态类以包含扩展方法。
    2.该类必须对客户端代码可见。
    3.将该扩展方法实现为静态方法,并使其至少具有与包含类相同的可见性。
    4.方法的第一个参数指定方法所操作的类型;该参数必须以 this 修饰符开头。

请注意,第一个参数不是由调用代码指定的,因为它表示正应用运算符的类型,并且编译器已经知道对象的类型。 您只需通过 n 为这两个形参提供实参。

注意事项:

    1.扩展方法必须在静态类中定义
    2.扩展方法的优先级低于同名的类方法
    3.扩展方法只在特定的命名空间内有效
    4.除非必要不要滥用扩展方法

更多关于C#相关内容感兴趣的读者可查看本站专题:《C#窗体操作技巧汇总》、《C#数据结构与算法教程》、《C#常见控件用法教程》、《C#面向对象程序设计入门教程》及《C#程序设计之线程使用技巧总结》

希望本文所述对大家C#程序设计有所帮助。


# C#  # 扩展方法  # C# 9.0新特性——扩展方法GetEnumerator支持foreach循环  # C# 扩展方法小结  # 简单介绍C# 中的扩展方法  # 详解C#扩展方法原理及其使用  # 深入理解C#中的扩展方法  # c#中的扩展方法学习笔记  # C#中反射和扩展方法如何运用  # 解析C#的扩展方法  # C#中this用法系列(二) 通过this修饰符为原始类型扩展方法  # C#中的扩展方法详解  # C# 扩展方法的使用  # 第一个  # 程序设计  # 其他的  # 转化为  # 到第  # 客户端  # 是一种  # 相关内容  # 是由  # 两种  # 感兴趣  # 这两个  # 数据结构  # 第二个  # 给大家  # 使其  # 请注意  # 因为它  # 该如何  # 只在 


相关文章: 专业网站设计制作公司,如何制作一个企业网站,建设网站的基本步骤有哪些?  宝塔建站助手安装配置与建站模板使用全流程解析  详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)  香港服务器网站卡顿?如何解决网络延迟与负载问题?  视频网站app制作软件,有什么好的视频聊天网站或者软件?  重庆网站制作公司哪家好,重庆中考招生办官方网站?  青岛网站设计制作公司,查询青岛招聘信息的网站有哪些?  湖南网站制作公司,湖南上善若水科技有限公司做什么的?  制作门户网站的参考文献在哪,小说网站怎么建立?  建站主机类型有哪些?如何正确选型  如何快速生成专业多端适配建站电话?  建站之星好吗?新手能否轻松上手建站?  如何通过服务器快速搭建网站?完整步骤解析  如何通过远程VPS快速搭建个人网站?  网页设计网站制作软件,microsoft office哪个可以创建网页?  如何零基础开发自助建站系统?完整教程解析  怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?  建站10G流量真的够用吗?如何应对访问高峰?  建站之星下载版如何获取与安装?  建站之星代理平台如何选择最佳方案?  企业微网站怎么做,公司网站和公众号有什么区别?  商务网站制作工程师,从哪几个方面把握电子商务网站主页和页面的特色设计?  建站之星各版本价格是多少?  建站之星后台密码遗忘如何找回?  如何快速生成凡客建站的专业级图册?  c# await 一个已经完成的Task会发生什么  建站主机是什么?如何选择适合的建站主机?  无锡制作网站公司有哪些,无锡优八网络科技有限公司介绍?  如何用y主机助手快速搭建网站?  c# F# 的 MailboxProcessor 和 C# 的 Actor 模型  如何快速搭建响应式可视化网站?  招商网站制作流程,网站招商广告语?  如何选择高效可靠的多用户建站源码资源?  香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化  海南网站制作公司有哪些,海口网是哪家的?  南京做网站制作公司,南京哈发网络有限公司,公司怎么样,做网页美工DIV+CSS待遇怎么样?  网站制作话术技巧,网站推广做的好怎么话术?  logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?  教学网站制作软件,学习*后期制作的网站有哪些?  无锡营销型网站制作公司,无锡网选车牌流程?  GML (Geography Markup Language)是什么,它如何用XML来表示地理空间信息?  网站专业制作公司,网站编辑是做什么的?好做吗?工作前景如何?  零基础网站服务器架设实战:轻量应用与域名解析配置指南  建站之星代理商如何保障技术支持与售后服务?  实现虚拟支付需哪些建站技术支撑?  详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)  香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南  车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?  手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?  如何在Ubuntu系统下快速搭建WordPress个人网站? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。