c#笔记--扩展方法

本文介绍了C#中的扩展方法,这是一种向现有类型添加方法而不修改原始类型的方式。扩展方法作为静态方法,通过`this`关键字标记首个参数来指定作用类型。当与类型中已有的方法签名冲突时,扩展方法不会被调用。扩展方法需定义在静态类中,并且调用时如同实例方法。示例展示了如何为`Person`类型定义一个扩展方法`GetBIsChild`,用于判断是否为未成年人。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

摘自:
博客园博主「返回主页懒得安分」的原创文章
优快云博主「天马3798」的原创文章

功能定义

  1. 扩展方法使你能够向现有类型“添加”方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。
  2. 扩展方法是一种特殊的静态方法,第一个参数指定该方法作用于哪个类型,并且该参数以 this 修饰符为前缀。可以像扩展类型上的实例方法一样进行调用。
  3. 对于用 C# 和 Visual Basic 编写的客户端代码,调用扩展方法与调用在类型中实际定义的方法之间没有明显的差异。

使用规则:

  1. 扩展方法不能和调用的方法放到同一个类中。
  2. 如果扩展方法与该类型中定义的方法具有相同的签名,则扩展方法永远不会被调用。
  3. 第一个参数必须要,并且必须是this,这是扩展方法的标识。如果方法里面还要传入其他参数,可以在后面追加参数。
  4. 扩展方法所在的类必须是静态类。
  5. 最好保证扩展方法和调用方法在同一个命名空间下。
  6. 如果在不同的命名空间下,声明了同一个类型的同名的扩展方法,且两个命名空间同时引入;或者在相同的命名空间下,不同的静态类中定义了同一个类型的同名的扩展方法:会抛出编译错误“以下方法或属性之间的调用具有二义性”。
    public class Person
    {
        public string Name { set; get; }
        public int Age { set; get; }
    }
    public class Person2
    {
        //Person的扩展方法,根据年龄判断是否是成年人
        public static bool GetBIsChild(this Person oPerson)
        {
            if (oPerson.Age >= 18)
                return false;
            else
                return true;
        }
    }
    public class Main
    {
        public void start()
        {
        	Person wang = new Person();
        	wang.GetBIsChild();  //像扩展类型上的实例方法一样进行调用。
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值