Net C# 扩展方法

扩展方法使您能够向现有类型“添加”方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用。

好处:
不修改原有类型的实现

调用:
调用以成员函数方式调用,静态实现

范例:
using System.Linq;
using System.Text;
using System;

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;
        }
    }
}
namespace Extension_Methods_Simple
{
    //Import the extension method namespace.
    using CustomExtensions;
    class Program
    {
        static void Main(string[] args)
        {
            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);
        }
    }
}

上述代码实现的字统计

你也可以采用继承的方式来实现

public class StringExtension : String
{
    public int WordCount()
    {
    ......
    }

调用上,这是两个不同的类别处理。

=======================================================

看到这里,如果学习Objective-C,就知道Category这个东西,就是用于扩展方法。

看来C#这个语言,从多类语言中吸取各自的优点,混装了自己~

至于Objective-C的Category,这里不做介绍和比对

=======================================================

转载于:https://www.cnblogs.com/GoGoagg/archive/2011/08/04/2127697.html

Net C# 扩展方法相关推荐

  1. C# 3.0 —— 扩展方法

    扩展方法是C# 3.0新加入的特性,允许我们在不改变源代码的情况下扩展(即填加)现有类型中的实例方法,也给我们提供了另外一种扩展类型行为的方法(其它的方法为继承.组合.反射). 下面我们来看一个代码示 ...

  2. 技术图文:C# 语言中的扩展方法

    背景 前段时间,在知识星球立了一个Flag,在总结 Leetcode 刷题的第五篇图文时遇到了扩展方法 这个知识点,于是先总结一下. 1.扩展方法概述 扩展方法能够向现有类型"添加" ...

  3. 使用扩展方法和静态门面类实现伪领域对象

    背景介绍 领域对象,在此特指充血的领域对象模型,在解决什么是伪领域对象之前,需要事先解释何为充血的领域对象.在此后的介绍中,假设我们存在对象模型Employee-Department. 在面向对象的实 ...

  4. Kotlin 简化Fragment使用的扩展方法

    为了更方便的使用Frgment,使用扩展方法对其进行扩展,来简化其使用方式 添加扩展函数 inline fun FragmentManager.inTransaction(func: Fragment ...

  5. 为JS和C#类加一个扩展方法吧:P

    JS扩展方法:通过原型prototype为JS的function扩展一个新的function <script> function Rectangle(width, height) { th ...

  6. MongoDB:利用官方驱动改装为EF代码风格的MongoDB.Repository框架 五 --- 为ListMongoDBRef增加扩展方法...

    本次改动主要内容:为List<MongoDBRef>增加扩展方法 在MongoDB.Repository的使用过程中,发现在一个类中只定义一个List<MongoDBRef>是 ...

  7. java params 参数_将params作为参数传递给类扩展方法的函数

    我正在尝试将函数作为参数传递给类扩展方法 . 做的时候 fun Router.handleJsonGet(path: String, method: () -> Any) { this.get( ...

  8. C#拾遗系列(9):继承、接口、扩展方法、分部类、类操作、Ref and Out、可空类型...

    本文内容: 继承 Equal示例 结构和类 属性 Ref and Out 类操作 扩展方法 接口 可空类型 分部类 1. 继承 using System; using System.Collectio ...

  9. python中矩阵拼接_numpy实现合并多维矩阵、list的扩展方法

    一.合并多个numpy矩阵 1.首先创建两个多维矩阵 矩阵a的大小为(2,3,2) 矩阵b的大小为(3,2,3) 采用concatentate这个函数就可以合并两个多维矩阵 合并之后应为(5,3,2) ...

  10. 您最喜欢的C#扩展方法是什么? (codeplex.com/extensionoverflow)

    让我们列出一个答案列表,在其中发布优秀和最喜欢的扩展方法 . 要求是必须张贴完整的代码,并提供示例和使用说明. 基于对该主题的高度兴趣,我在Codeplex上建立了一个名为extensionoverf ...

最新文章

  1. Linux应用层的定时器Timer使用详解【转】
  2. 交换机短路_弱电工程中最常用的网络设备,网络交换机的种类有哪些
  3. idea创建maven的web项目
  4. python 查找文件名包含指定字符串
  5. SAP Spartacus B2B 页面信息提示图标的弹出窗口显示实现逻辑
  6. python程序设计遇到的问题_Python程序设计与实践:用计算思维解决问题
  7. 下载maven依赖到指定目录
  8. 两阶段最小二乘法原理_两阶段最小二乘法.PPT
  9. L1-015 跟奥巴马一起画方块 (15 分) — 团体程序设计天梯赛
  10. webstorm注释写出的提示
  11. 部署SCOM2012 SP1
  12. linux服务之irqbalance
  13. 陈弘:7月24日阿里云上海峰会存储大神
  14. 敏捷开发模式几个名词
  15. 【流程发现算法概述】
  16. 学习笔记3--车载传感器之毫米波雷达和超声波雷达
  17. 百度搜索引擎工作原理解读
  18. 服务器遭到newinit.sh木马挖矿攻击记录
  19. 【物联网】AT指令|AT返回错误|AT 指令 收发短信和GPRS上网 SIM508/548
  20. [COPY]《京东技术解密》——海量订单处理

热门文章

  1. LeetCode 1739. 放置盒子(数学)
  2. LeetCode 993. 二叉树的堂兄弟节点(层序遍历)
  3. 计算机系统操作在线作业,电子科大《计算机操作系统》在线作业3
  4. 线程间通信的几种方法_并发编程中的线程间通信
  5. python中的文件数据保存
  6. MYSQL错误: ERROR 1205: Lock wait timeout exceeded(处理MYSQL锁等待)解决办法
  7. 一份北大信科内部流传的 “CS 自救指南”
  8. Attention模型:我的注意力跟你们人类不一样
  9. Android自定义Lint实践
  10. Python学习练习:批量移动文件