Net C# 扩展方法
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# 扩展方法相关推荐
- C# 3.0 —— 扩展方法
扩展方法是C# 3.0新加入的特性,允许我们在不改变源代码的情况下扩展(即填加)现有类型中的实例方法,也给我们提供了另外一种扩展类型行为的方法(其它的方法为继承.组合.反射). 下面我们来看一个代码示 ...
- 技术图文:C# 语言中的扩展方法
背景 前段时间,在知识星球立了一个Flag,在总结 Leetcode 刷题的第五篇图文时遇到了扩展方法 这个知识点,于是先总结一下. 1.扩展方法概述 扩展方法能够向现有类型"添加" ...
- 使用扩展方法和静态门面类实现伪领域对象
背景介绍 领域对象,在此特指充血的领域对象模型,在解决什么是伪领域对象之前,需要事先解释何为充血的领域对象.在此后的介绍中,假设我们存在对象模型Employee-Department. 在面向对象的实 ...
- Kotlin 简化Fragment使用的扩展方法
为了更方便的使用Frgment,使用扩展方法对其进行扩展,来简化其使用方式 添加扩展函数 inline fun FragmentManager.inTransaction(func: Fragment ...
- 为JS和C#类加一个扩展方法吧:P
JS扩展方法:通过原型prototype为JS的function扩展一个新的function <script> function Rectangle(width, height) { th ...
- MongoDB:利用官方驱动改装为EF代码风格的MongoDB.Repository框架 五 --- 为ListMongoDBRef增加扩展方法...
本次改动主要内容:为List<MongoDBRef>增加扩展方法 在MongoDB.Repository的使用过程中,发现在一个类中只定义一个List<MongoDBRef>是 ...
- java params 参数_将params作为参数传递给类扩展方法的函数
我正在尝试将函数作为参数传递给类扩展方法 . 做的时候 fun Router.handleJsonGet(path: String, method: () -> Any) { this.get( ...
- C#拾遗系列(9):继承、接口、扩展方法、分部类、类操作、Ref and Out、可空类型...
本文内容: 继承 Equal示例 结构和类 属性 Ref and Out 类操作 扩展方法 接口 可空类型 分部类 1. 继承 using System; using System.Collectio ...
- python中矩阵拼接_numpy实现合并多维矩阵、list的扩展方法
一.合并多个numpy矩阵 1.首先创建两个多维矩阵 矩阵a的大小为(2,3,2) 矩阵b的大小为(3,2,3) 采用concatentate这个函数就可以合并两个多维矩阵 合并之后应为(5,3,2) ...
- 您最喜欢的C#扩展方法是什么? (codeplex.com/extensionoverflow)
让我们列出一个答案列表,在其中发布优秀和最喜欢的扩展方法 . 要求是必须张贴完整的代码,并提供示例和使用说明. 基于对该主题的高度兴趣,我在Codeplex上建立了一个名为extensionoverf ...
最新文章
- Linux应用层的定时器Timer使用详解【转】
- 交换机短路_弱电工程中最常用的网络设备,网络交换机的种类有哪些
- idea创建maven的web项目
- python 查找文件名包含指定字符串
- SAP Spartacus B2B 页面信息提示图标的弹出窗口显示实现逻辑
- python程序设计遇到的问题_Python程序设计与实践:用计算思维解决问题
- 下载maven依赖到指定目录
- 两阶段最小二乘法原理_两阶段最小二乘法.PPT
- L1-015 跟奥巴马一起画方块 (15 分) — 团体程序设计天梯赛
- webstorm注释写出的提示
- 部署SCOM2012 SP1
- linux服务之irqbalance
- 陈弘:7月24日阿里云上海峰会存储大神
- 敏捷开发模式几个名词
- 【流程发现算法概述】
- 学习笔记3--车载传感器之毫米波雷达和超声波雷达
- 百度搜索引擎工作原理解读
- 服务器遭到newinit.sh木马挖矿攻击记录
- 【物联网】AT指令|AT返回错误|AT 指令 收发短信和GPRS上网 SIM508/548
- [COPY]《京东技术解密》——海量订单处理
热门文章
- LeetCode 1739. 放置盒子(数学)
- LeetCode 993. 二叉树的堂兄弟节点(层序遍历)
- 计算机系统操作在线作业,电子科大《计算机操作系统》在线作业3
- 线程间通信的几种方法_并发编程中的线程间通信
- python中的文件数据保存
- MYSQL错误: ERROR 1205: Lock wait timeout exceeded(处理MYSQL锁等待)解决办法
- 一份北大信科内部流传的 “CS 自救指南”
- Attention模型:我的注意力跟你们人类不一样
- Android自定义Lint实践
- Python学习练习:批量移动文件