扩展方法

怎样知道的。

这还得从项目的本身说起。该项目是一套的微软底层架构上搭建起来的。

全部的框架以及控件的封装,数据的传递方法都是总体的框架封装好的。

对经常使用的dropwodnlist控件的数据绑定,这里就有使用的一些扩展方法的封装。怎么曾经没有见过这种方法呢。跟过去才发现是扩展方法。

什么是扩展方法


扩展方法可以向现有类型“加入”方法,而无需创建新的派生类型、又一次编译或以其它方式改动原始类型。

扩展方法是一种特殊的静态方法,调用扩展方法与调用在类型中实际定义的方法之间没有明显的差异

怎样编写扩展方法


扩展方法被定义为静态方法,但它们是通过实例方法语法进行调用的。
它们的第一个參数指定该方法作用于哪个类型。而且该參数以 this
修饰符为前缀
仅当您使用 using
指令将命名空间显式导入到源码中之后,扩展方法才位于范围中。

看下面样例

using System;
usingSystem.Collections.Generic; using MySpace;//注意:引入扩展方法的空间 namespace Con_1
{
class Program
{
static void Main(string[] args)
{
string str = "{0}先生。 ".With("XuGang");
Console.WriteLine("您好。" + str); //2调用集合的扩展方法
str.ShowItems<char>();
}
}
} namespace MySpace
{
//扩展方法必须在非泛型静态类中定义
public static class MyMethods
{
//注意:第一个參数使用“this”获得当前对象
public static string With(this string_context, params string[] _args)
{
returnstring.Format(_context,_args);
} //2为集合做扩展方法
public static voidShowItems<T>(this IEnumerable<T> _al)
{
foreach (var item in _al)
{
Console.WriteLine(item);
}
}
}
}

从上样例中能够看出

1  C# 仅仅支持扩展方法。不支持扩展属性、扩展事件等;

2  方法名无限制,第一个參数必须带 this;

3  扩展方法的命名空间能够使用namespace System ,但不推荐;

4  定义扩展方法的类是静态类。

详细准则请參考

有关具体信息。请參阅 怎样:实现和调用自己定义扩展方法(C#
编程指南)

小结:

这几天刚到公司,熟悉环境为主要。好些东西他们说了并非立即就能够明确的。

所以还是须要常常问旁边的同事

。用到的方法多是封装好的。所以看到这个认为熟悉可是细致看来。并非。扩展方法再不要的地方还是尽量少用。

避免出现错误。毕竟用的这些方法是平台设计人员几年的功底的。

版权声明:本文博客原创文章,博客,未经同意,不得转载。

c#扩展方法简单的更多相关文章

  1. 扩展方法 1 简单的string扩展方法

    这里是关于 String的简单扩展方法 (静态类 静态方法 this 类型 这里是string) static class Program { static void Main(string[] ar ...

  2. .NET 简单的扩展方法使用。

    写代码时,我们经常会碰到dll中提供的方法,不够用或者不好用的情况.而且我们也不方便去更改dll本身的源码. 这时候我们可以使用.NET提供的"扩展方法"去解决这个问题. 下面我写 ...

  3. .NET Core中间件的注册和管道的构建(3) ---- 使用Map/MapWhen扩展方法

    .NET Core中间件的注册和管道的构建(3) ---- 使用Map/MapWhen扩展方法 0x00 为什么需要Map(MapWhen)扩展 如果业务逻辑比较简单的话,一条主管道就够了,确实用不到 ...

  4. .NET Core中间件的注册和管道的构建(2)---- 用UseMiddleware扩展方法注册中间件类

    .NET Core中间件的注册和管道的构建(2)---- 用UseMiddleware扩展方法注册中间件类 0x00 为什么要引入扩展方法 有的中间件功能比较简单,有的则比较复杂,并且依赖其它组件.除 ...

  5. 为IEnumerable<T>添加RemoveAll<IEnumerable<T>>扩展方法--高性能篇

    最近写代码,遇到一个问题,微软基于List<T>自带的方法是public bool Remove(T item);,可是有时候我们可能会用到诸如RemoveAll<IEnumerab ...

  6. C#的扩展方法解析

    在使用面向对象的语言进行项目开发的过程中,较多的会使用到“继承”的特性,但是并非所有的场景都适合使用“继承”特性,在设计模式的一些基本原则中也有较多的提到. 继承的有关特性的使用所带来的问题:对象的继 ...

  7. ASP.NET MVC学前篇之扩展方法、链式编程

    ASP.NET MVC学前篇之扩展方法.链式编程 前言 目的没有别的,就是介绍几点在ASP.NETMVC 用到C#语言特性,还有一些其他琐碎的知识点,强行的划分一个范围的话,只能说都跟MVC有关,有的 ...

  8. 【原创】开源Math.NET基础数学类库使用(12)C#随机数扩展方法

                   本博客所有文章分类的总目录:[总目录]本博客博文总目录-实时更新  开源Math.NET基础数学类库使用总目录:[目录]开源Math.NET基础数学类库使用总目录 前言 ...

  9. 【开源】OSharp框架解说系列(3):扩展方法

    OSharp是什么? OSharp是个快速开发框架,但不是一个大而全的包罗万象的框架,严格的说,OSharp中什么都没有实现.与其他大而全的框架最大的不同点,就是OSharp只做抽象封装,不做实现.依 ...

随机推荐

  1. Spring+Netty+WebSocket实例

    比较贴近生产,详见注释 一.pom.xml 具体太长,详见源码 </dependency> <dependency> <groupId>io.netty</g ...

  2. Vue.js开发环境搭建的介绍

    包含了最基础的Vue.js的框架,包含了打包工具和测试工具,开发调试的最基本的服务器,不需要关注细节,只需关注Vuejs对项目的实现 npm在国内的网络使用较慢,所以推荐下载安装淘宝的镜像 1: 2: ...

  3. 【搜索引擎Jediael开发笔记】v0.1完整代码 2014-05-26 15:17 463人阅读 评论(0) 收藏

    详细代码请见 E:\Project\[重要]归档代码\SearchEngine归档代码 或 https://code.csdn.net/jediael_lu/jediael/tree/10991c83 ...

  4. yield return

    一次被yield return坑的历程.   事情的经过是这样的: 我用C#写了一个很简单的一个通过迭代生成序列的函数. public static IEnumerable<T> Iter ...

  5. form表单上传附件的几种方法

    问题描述:在网页开发过程中,当需要上传附件(图片,音频,视频等)时,常规方法是使用form表单进行提交,这里总结一下form表单提交的几种方法. 参考地址:http://www.cnblogs.com ...

  6. Android JNI编程(五)——C语言的静态内存分配、动态内存分配、动态创建数组

    版权声明:本文出自阿钟的博客,转载请注明出处:http://blog.csdn.net/a_zhon/. 目录(?)[+] 一:什么是静态内存什么又是动态内存呢? 静态内存:是指在程序开始运行时由编译 ...

  7. ant脚本中设置环境变量

    http://blog.csdn.net/quqi99/article/details/5329841

  8. HDU 5072 Coprime (单色三角形+容斥原理)

    题目链接:Coprime pid=5072"> 题面: Coprime Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: ...

  9. RESET MASTER 和RESET SLAVE 命令的使用方法 注意事项

    RESET MASTER 删除所有index file 中记录的所有binlog 文件,将日志索引文件清空,创建一个新的日志文件,这个命令通常仅仅用于第一次用于搭建主从关系的时的主库,注意  rese ...

  10. 【codeforces 754B】 Ilya and tic-tac-toe game

    time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard o ...