C#中关于扩展方法的实例分析

这篇文章主要介绍了c#扩展方法,结合实例形式分析了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));    }  }}

登录后复制

C#中关于扩展方法的实例分析

使用扩展方法:

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);    }  }}

登录后复制

C#中关于扩展方法的实例分析

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

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

定义扩展方法

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

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

注意事项:

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

以上就是C#中关于扩展方法的实例分析的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2439673.html

(0)
上一篇 2025年3月3日 12:09:27
下一篇 2025年3月2日 21:03:22

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • C#开发微信门户及应用(三)之文本消息和图文消息应答

    这篇文章主要为大家详细介绍了c#开发微信门户及应用第二篇,微信文本消息和图文消息的应答,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 微信应用如火如荼,很多公司都希望搭上信息快车,这个是一个商机,也是一个技术的方向,因此,有空研究下、学…

    2025年3月3日 编程技术
    200
  • C#开发微信门户及应用(四)之关注用户列表及详细信息管理

    这篇文章主要为大家详细介绍了c#开发微信门户及应用第四篇,关注用户列表及详细信息管理,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 在上个月的对C#开发微信门户及应用做了介绍,写过了几篇的随笔进行分享,由于时间关系,间隔了一段时间没有继…

    2025年3月3日
    200
  • 关于C#如何实现的UDP收发请求工具类的示例代码分析

    这篇文章主要介绍了c#实现的udp收发请求工具类,结合具体实例形式分析了c#针对udp请求的监听、接收、发送等相关操作技巧,需要的朋友可以参考下 本文实例讲述了C#实现的UDP收发请求工具类。分享给大家供大家参考,具体如下: 初始化: Li…

    编程技术 2025年3月3日
    200
  • C#中如何实现微信红包功能的示例代码分享

    这篇文章主要介绍了c#实现微信红包功能,使用正态分布计算红包金额,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 本文实例为大家分享了C#仿微信红包功能的具体代码,供大家参考,具体内容如下 Program.cs代码: class Prog…

    2025年3月3日
    200
  • C#中自定义控件如何实现TextBox禁止粘贴的示例代码

    这篇文章主要介绍了c#自定义控件实现textbox禁止粘贴的方法,结合具体实例形式分析了c#自定义控件的创建、使用方法及textbox禁止粘贴的实现技巧,需要的朋友可以参考下 本文实例讲述了C#自定义控件实现TextBox禁止粘贴的方法。分…

    编程技术 2025年3月3日
    200
  • C#中DateTime与时间戳转换的实例代码

    本篇文章主要介绍了c# datetime与时间戳转换实例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧 C# DateTime与时间戳的相互转换,包括JavaScript时间戳和Unix的时间戳。 1. 什么是…

    编程技术 2025年3月3日
    200
  • C#连接Oracle的实例教程

    这篇文章主要介绍了c#连接oracle的方法,结合实例形式总结分析了几种常见的c#连接oracle数据库的操作技巧与相关注意事项,需要的朋友可以参考下 本文实例总结了C#连接Oracle的方法。分享给大家供大家参考,具体如下: 一、通过Sy…

    编程技术 2025年3月3日
    200
  • C#中如何使用SendMessage?

        在c#中,程序采用了的驱动采用了事件驱动而不是原来的消息驱动,虽然.net框架提供的事件已经十分丰富,但是在以前的系统中定义了丰富的消息对系统的编程提供了方便的实现方法,因此在c#中使用消息有时候还是大大提高编程的效率的。  1 定…

    编程技术 2025年3月3日
    200
  • 使用碳粉和硒鼓的方法

    打印机是需要加硒鼓才可以打印的,但是这个材料的成本过高,很多的用户会采用加碳粉的硒鼓来节约一下,那么硒鼓怎样加碳粉呢?来看看详细教程。 硒鼓怎样加碳粉: 1、首先从打印机中取出硒鼓,然后找到上面的固定螺丝将其卸下来。 2、然后用螺丝将盖子上…

    2025年3月3日 互联网
    200
  • Windows服务在C#下如何创建(图)?

    这篇文章主要介绍了使用c#创建windows服务的实例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧 本文介绍了使用C#创建Windows服务的实例代码,分享给大家 一、开发环境 操作系统:Windows …

    2025年3月3日 编程技术
    200

发表回复

登录后才能评论