偶遇扩展方法 this

昨天在公司的代码中看到一个有意思的东西,就是方法的参数前加上一个this,我以前没有见过,当然也没有用过,出于好奇,就打开IE浏览器进行了百度行动,这是我的一贯作风,有困难找百度,最后的百度的结果是,这是扩展方法,很神奇的东西,我现在是一个小小的菜鸟,对这个不熟悉很自然,希望各位大虾们不要笑话我,在这里我是想自我总结,希望和我一样没见过的小鸟们一起学习,这个扩展方法挺有意思的,在网上看的云里雾里的,没有一个文章能给我讲清楚,于是乎,还是通过交流学习吧,我去想我的组长请教了一下,原来这个东西是所得寺内,哈哈,下面我简单的介绍我所学的东西。

 

1、扩展方法是给现有类型添加一个方法;

2、扩展方法是通过 指定关键字this修饰方法的第一个参数;

3、扩展方法必须声明在静态类中;

4、扩展方法要通用对象来调用;

5、扩展方法可以带参数。

 

还是看看代码吧:

 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

 

namespace ThisDemo

{

    class Program

    {

        static void Main(string[] args)

        {

            Operation op = new Operation();

            Person p = new Person();

            Console.WriteLine("普通实例方法拿到的名字:"+op.GetName(p));

            Console.WriteLine("通过扩展方法拿到的年龄:"+p.GetAge().ToString());

            Console.Read();

        }

    }

 

    public class Person

    {

        public string Name = "我的名字";

        public int Age = 22;

    }

 

    public class Operation

    {

        public string GetName(Person p)

        {

            return p.Name;

        }

    }

 

    public static class Helper

    {

        public static int GetAge(this Person p)

        {

            return p.Age;

        }

    }

}

 

以上代码不想多解释,我看到人家介绍的比我好,我不想说得太多,如果想进一步了解,我给大家提供一个网址,大家可以学习一下。

 

http://www.cnblogs.com/ldp615/archive/2009/08/07/1541404.html

posted @   TerryZou1989  阅读(204)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示