Unity使用扩展方法类

扩展方法在实现上和普通的面向对象编程是一样的,换句话说,我们只需要定义一个类,然后在里面添加并实现相应的方法即可。但是这里需要注意的地方有三点,第一,实现扩展方法的类必须是静态类且类的名称和实现扩展方法的类无关;第二、实现扩展方法的类方法必须是静态方法;第三、实现扩展方法的类方法的第一个参数必须是使用this关键字指明要实现扩展方法的类。例如,我们知道将一个合法字符串类型转换为整型,可以使用int.parse()方法,假如我们希望为string类型扩展一个ToInt方法应该怎么办呢?我们一起来看下面的这段代码:

using UnityEngine;
using System.Collections;
/// <summary>
/// 扩展类使用方法:
/// 0、需要注意的是C#支持扩展方法是从.NET3.5版本开始
/// 1、类和方法都必须是静态的
/// 2、在方法中的参数前面必须加关键字 this
/// 3、调用时直接使用 string str = "123"; int d = str.ToInt ();
/// </summary>
public static class Testt {

    /// <summary>
    /// 扩展 强制转换int方法
    /// </summary>
    /// <returns>The int.</returns>
    /// <param name="str">String.</param>
    public static int ToInt(this string str){
        return int.Parse (str);
    }

    /// <summary>
    /// 扩展强制转换Transform.position 的世界坐标
    /// </summary>
    /// <param name="tempPosition">Temp position.</param>
    /// <param name="valueX">Value x.</param>
    public static void SetPositionX(this Transform tempPosition,float valueX){
        tempPosition.position = new Vector3 (valueX,tempPosition.position.y,tempPosition.position.z);
    }

    /// <summary>
    /// 扩展强制转换Transform.position 的局部坐标
    /// </summary>
    /// <param name="mTransform">M transform.</param>
    /// <param name="valueX">Value x.</param>
    public static void SetLocalPositionX(this Transform mTransform,float valueX){
        mTransform.position = new Vector3 (valueX,mTransform.position.y,mTransform.position.z);
    }
}

小结

在C#中实现扩展方法的类必须是静态类且类的名称和实现扩展方法的类无关
实现扩展方法的类方法必须是静态方法
实现扩展方法的类方法的第一个参数必须是使用this关键字指明要实现扩展方法的类
实现扩展方法应遵守就近原则,在最小的范围内使用扩展方法以避免造成“污染”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值