示例1:

public static RectangleF TransformRect(this Matrix mat, RectangleF rect)

是向Matrix类扩展带有RectangleF类型形参的方法:TransformRect(RectangleF rect)

调用方法:

RectangleF defRect = ...
var rect = matrix.TransformRect(defRect);

来自网路:

public static class StringExtension
{
   public staticvoid Foo(this string s)
   {
      Console.WriteLine("Foo invoked for {0}",s);
   }
}

为什么这里会有一个this关键字,做什么用?其实这就是扩展方法!这个扩展方法在静态类中声明,定义一个静态方法,其中第一个参数定义可它的扩展类型。Foo()方法扩展了String类,因为它的第一个参数定义了String类型,为了区分扩展方法和一般的静态方法,扩展方法还需要给第一个参数使用this关键字。

现在就可以使用带string类型的Foo方法了:

string s="Hello"; s.Foo();//调用

结果在控制台上显示Foo invoked for Hello ,因为Hello是传送给Foo方法的字符串。

归纳:扩展方法可以写入最初没有提供该方法的类中。还可以把方法添加到实现某个接口的任何类中,这样多个类可以使用相同的实现代码。

参考文献:

http://blog.csdn.net/zhuzhu837_1/article/details/8448083

C# 使用this的形参的更多相关文章

  1. C++:一般情况下,设计函数的形参只需要两种形式

    C++:一般情况下,设计函数的形参只需要两种形式.一,是引用形参,例如 void function (int &p_para):二,是常量引用形参,例如 void function(const ...

  2. 《征服 C 指针》摘录5:函数形参 和 空的下标运算符[]

    一.函数的形参的声明 C 语言可以像下面这样声明函数的形参: void func(int a[]) {     // ... } 对于这种写法,无论怎么看都好像要向函数的参数传递数组. 可是,在 C ...

  3. python学习道路(day4note)(函数,形参实参位置参数匿名参数,匿名函数,高阶函数,镶嵌函数)

    1.函数 2种编程方法 关键词面向对象:华山派 --->> 类----->class面向过程:少林派 -->> 过程--->def 函数式编程:逍遥派 --> ...

  4. C++ 函数形参发生动态绑定时指针增长步长与静态类型一致

    牛客网上的题: class A { public: long a; }; class B : public A { public: long b; }; void seta1(A* data, int ...

  5. C语言 01 形参实参

    之前的都在印象笔记记录 continue 结束本轮循环体,进入下一次循环.break 直接结束整个while循环 形参:定时函数时函数名后面中的参数实参:调用函数时传入的具体数据基本数据类型作为形参, ...

  6. python3 函数的形参、实参、位置参数、默认参数、关键字参数以及函数的递归

    python 版本 3.5 #Author by Andy#_*_ coding:utf-8 _*_def func(x,y=2): print('我是形参%s'%x) print('我是默认参y-- ...

  7. 问题:C++形参默认值为什么一定要放在最后?

    问题:C++形参默认值为什么一定要放在最后? 1.会出现歧义! 2.从汇编角度看是怎么回事?   待解答!!

  8. 形参是ofstream

    今天写了一段代码报错 void GetEigenvalue(pcl::PointCloud<pcl::PointXYZ>::ConstPtr cloud, vector<int> ...

  9. 通过指定函数/方法形参类型提高PHP代码可靠性

    指定形参类型是PHP 5就支持的一项特性.形参支持array - 数组. object - 对象两种类型. class User{ public $name; public $password; fu ...

  10. c++形参改变实参(对指针的理解

    这几天搞逻辑比较晕,居然把指针的概念都混淆了. eg:int *p;//当然不对指针初始化在有些编译器是通不过编译的,比如VS(尤其是选中了SDL) 指针p是一个对象,定义开始没有分配了内存空间,只是 ...

随机推荐

  1. URL和报文知识总结 ——1

    第一部分:浏览器生成的消息 关键词:URL的解析  HTTP请求的生成  DNS服务器 1.URL(网址)的构成: 对于一个网址的解析: https://i.cnblogs.com/index.htm ...

  2. Go 入门 - Go中的复杂类型

    主要内容来自中文版的官方教程Go语言之旅 目的为总结要点 指针 Go 拥有指针.指针保存了值的内存地址. 类型 *T 是指向 T 类型值的指针.其零值为 nil. var p *int & 操 ...

  3. go基础语法-函数

    1.基础定义 golang的函数很'纯粹',只有可变参数列表的概念,没有默认参数.可选参数.函数重载.操作符重载这些难以把控的概念 语法:'func'声明,而后函数名在前,中间的括号内定义参数,返回值 ...

  4. 打开所有https网页都提示证书错误

    最近安装了网上下载的ghost系统,可是不管是win7还是xp,打开所有的https网站都提示证书错误.想想现在打击盗版系统的力度不断增加,以前做的比较好的盗版系统网站都已经不再做系统了,现在下载的g ...

  5. 优步UBER司机全国各地奖励政策汇总 (2月15日-2月21日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  6. 北京Uber优步司机奖励政策(3月3日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  7. Ubuntu 18启动失败 Started Hold until boot procss finishes up

    原因: 启动ubuntu 的时候,磁盘空间不够了. 解决方法: 启动Ubuntu 的时候,选择Advanced options for Ubuntu 然后选择recovery 之后选择clean 清理 ...

  8. autocomplete.jquery 点击或进入默认显示所有结果

    注意使用的是autocomplete.jquery,官网地址是:https://github.com/devbridge/jQuery-Autocomplete.而不是JqueryUI的autocom ...

  9. vue2组件之间双向数据绑定问题

    最近在使用element-ui的dialog组件二次封装成独立组件使用时,子组件需要将关闭dialog状态返回给父组件,简单的说就是要实现父子组件之间的数据双向绑定问题. 大致代码如下: 1,父组件 ...

  10. 「日常训练」Battle Over Cities - Hard Version(PAT-TOP-1001)

    题意与分析 题意真的很简单,实在不想讲了,简单说下做法吧. 枚举删除每个点,然后求最小生成树,如果这个路已经存在那么边权就是0,否则按照原来的处理,之后求花费,然后判整个图是否联通(并查集有几个roo ...