C#扩展方法例子

C#3.0/3.5以后增加了“扩展方法”

扩展方法是一种特殊的静态方法,可以像扩展类型上的实例方法一样进行调用,能向现有的类型(比如int,string,float,double等)“添加”方法,而无需创建新的派生类、重新编译或者以其他方式修改原始类型。

电脑:ThinkPad T570

系统:win10

开发环境:VS2019

例:

新建一个winform窗口程序,在类Form1外增加一个自定义类,命名未CusIntUtil,代码如下:

    public static class CusIntUtil
    {
        public static void WriteSelf(this int nSelf)
        {
            Trace.WriteLine(string.Format("int value = {0}",nSelf));
        }
        public static void WriteSelf(this string str)
        {
            Trace.WriteLine(string.Format("str value = {0}", str));
        }
    }

界面添加一个按钮,如下:

 双击扩展方法测试按钮,增加相关代码:

        private void button2_Click(object sender, EventArgs e)
        {
            int n = 100;
            n.WriteSelf();
            string str = "扩展方法";
            str.WriteSelf();
        }

运行后点击按钮,在输出窗口就会显示:

 注意点:

1.实例方法优先于扩展方法(允许存在同名实例方法和扩展方法)。

2.可以在空引用上调用扩展方法(string和class统称为引用类型,int,long,struct等为值类型)。

3.可以被继承。

4.扩展方法必须放在一个非嵌套,非泛型的静态类中,即:CusIntUtil类一定要写在Form1类外,如果写在Form1类内部则会报错。

5.他至少又一个参数,而且第一个参数必须附加 this 关键字,第一个参数不能又任何其他修饰符(out/ref),第一个参数不能是指针类型,并且其类型决定了本扩展方法是在什么类型上进行扩展的。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GreenHandBruce

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值