C#扩展方法的简单使用

问题

阅读源码的时候,发现某个对象调用了没有在它的类中定义的方法,这是怎么回事呢?

原来使用了扩展方法。

扩展方法

给C#内置对象或自定义对象添加扩展方法,那么在同一个命名空间下面定义的所有的该类对象都可以直接调用此扩展方法。

使用时需要注意:

(1)扩展方法不能和调用的方法放到同一个类中

(2)第一个参数必须要,并且必须是this,这是扩展方法的标识。如果方法里面还要传入其他参数,可以在后面追加参数

(3)扩展方法所在的类必须是静态类

(4)最好保证扩展方法和调用方法在同一个命名空间下

向string类添加扩展方法的示例

添加一个GetNotNullStr的扩展方法:

public static string GetNotNullStr(this string strRes)
{
    if (strRes == null)
        return string.Empty;
    else
        return strRes ;
}

在Main函数中调用:

static void Main(string[] args)
{
    string strTest = null;
    var strRes = strTest.GetNotNullStr();
}

向string类添加扩展方法的示例

定义Person类:

public class Person
{
    public string Name { set; get; }
    public int Age { set; get; }
}

定义一个Person类的扩展方法:

public static class PersonExtensions{

	 //Person的扩展方法,根据年龄判断是否是成年人
	 public static bool GetBIsChild(this Person oPerson)
	 {
	     if (oPerson.Age >= 18)
	         return false;
	     else
	         return true;
	 }
 }

调用:

static void Main(string[] args)
{
	var oPerson1 = new Person();
	oPerson1.Age = 20;
	//调用扩展方法
	var bIsChild = oPerson1.GetBIsChild();   
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值