C#中的扩展方法

一:使用场景

——对某些已经封装好的类进行扩展
——Unity中的系统类,例如GameObject类,Transform类等等,我们无法修改其源码


二:使用方法

——扩展方法必须定义为静态方法
——扩展方法必须定义在静态类中
——方法的第一个参数必须以this开头,并且指定此方法是扩展自哪个类型
——扩展方法名与该类型中定义的方法名不能相同,相同的话只能调用该类型中定义的方法

using System;

class MainClass
{
    static void Main(string[] args)
    {
        string str = "test";
        Console.WriteLine(str.ToStr());
    }
}

public static class StringExt
{
    public static string ToStr(this string str)
    {
        return "this is ext fun , " + str;
    }
}

系统内部其实还是调用了一个静态方法,使用str.ToStr()与StringExt.ToStr(str)调用都可以 


三:模拟链式编程

像DoTween这种链式编程的形式就是通过this关键字实现的
如下代码可以使用链式编程结构:transform.SetX(1).SetY(1).SetZ(1).ResetTrans();

using UnityEngine;

public static class ExtTest
{
    public static Transform SetX(this Transform trans, float x)
    {
        Vector3 v = trans.position;
        v.x = x;
        trans.position = v;
        return trans;
    }
    public static Transform SetY(this Transform trans, float y)
    {
        Vector3 v = trans.position;
        v.y = y;
        trans.position = v;
        return trans;
    }
    public static Transform SetZ(this Transform trans, float z)
    {
        Vector3 v = trans.position;
        v.z = z;
        trans.position = v;
        return trans;
    }
    public static Transform ResetTrans(this Transform trans)
    {
        trans.position = Vector3.zero;
        return trans;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Hello Bug.

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

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

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

打赏作者

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

抵扣说明:

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

余额充值