扩展方法

怎样知道的。

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

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

对经常使用的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. UVA 10106 Product (大数相乘)

    Product The Problem The problem is to multiply two integers X, Y. (0<=X,Y<10250) The Input The ...

  2. 移动web处理input输入框输入银行卡号四位一空格

    由于项目上有需求要求输入银行卡号四位一空格的需求,改过好几版发现都有bug,最后优化了一版看起来效果还行,发帖留存. 难点是从中间插入和删除处理光标问题. 首先需要用到获取光标和设置光标的方法. // ...

  3. Spring Boot+Mybatis+Pagehelper分页

    Spring Boot 集成MyBatis和Pagehelper分页插件 mybatis-spring-boot-starter依赖树如下: pom配置 <project xmlns=" ...

  4. [Angular2 Router] Setup page title with Router events

    Article import 'rxjs/add/operator/filter'; import 'rxjs/add/operator/map'; import 'rxjs/add/operator ...

  5. Java 学习(22):Java MySQL 连接

    Java MySQL 连接 本章节我们为大家介绍 Java 如何使用 使用 JDBC 连接 MySQL 数据库. Java 连接 MySQL 需要驱动包,最新版下载地址为:http://dev.mys ...

  6. Android 输入框弹出样式

    在androidMainfest.xml文件里 在Activity中设置 [A]stateUnspecified:软键盘的状态并没有指定,系统将选择一个合适的状态或依赖于主题的设置 [B]stateU ...

  7. cat /proc/cpuinfo 引发的思考--CPU 物理封装-物理核心-逻辑核心-超线程之间关系

    CPU的物理封装,一个物理封装使用独立的一个CPU物理插槽,共享电源和风扇: CPU物理核心:在一个物理封装中封装了多个独立CPU核心,每一个CPU核心都有自己独立的完整硬件单元. CPU逻辑核心:一 ...

  8. php课程 4-17 数组键值操作函数有哪些

    php课程 4-17  数组键值操作函数有哪些 一.总结 一句话总结:多看学习视频 1.php中数组的键值操作函数有哪6个? • array_values();获取数组中的值• array_keys( ...

  9. <Linux> xm 命令

    xm console     <域ID>         ctrl+ ] 退出虚拟机到宿主 xm reboot      <域ID> xm pause       <域I ...

  10. Android NDK对象的引用-全局引用,局部引用,弱引用

    百度了一下,google了一下,关于NDK引用的介绍无10篇中就有9.9篇是相同的,对于这种问题,我只能呜呼哀哉了!! 局部引用(函数内部对象类型变量):在C或C++中,局部变量表示只运行范围局限在该 ...