一般情况我们应该先考虑使用as进行类型转换,然后再考虑使用强制转换。
使用as进行转换
转换失败时不抛出异常。
只支持引用类型。
使用强制转换类型
转换失败时会抛出异常。
支持引用类型和值类型的转换。
当使用单例模式时需要加上约束条件才能使用as
public class MonoSingleton<T> : MonoBehaviour
where T:MonoBehaviour//约束
{
private T instance;
protected T Instance
{
get
{
return instance;
}
}
protected virtual void Awake()
{
instance = this as T;
}
}