首页 > 代码库 > The expression being assigned to optional parameter `v2' must be a constant or default value

The expression being assigned to optional parameter `v2' must be a constant or default value

今天写代码的时候遇到一个问题以前没有遇到过的问题,就是当我给一个对象参数赋值默认值的时候,报错了,代码如下

public void ShowOrHiddenKuang(bool isShow,Vector2 v2=Vector2.zero){
        kuang.gameObject.SetActive(isShow);
        kuang.transform.localPosition = v2;
    }

找了相关资料发现应该这么写

public void ShowOrHiddenKuang(bool isShow,Vector2 v2=default(Vector2)){
        kuang.gameObject.SetActive(isShow);
        kuang.transform.localPosition = v2;
    }

原因是c#的默认参数必须是一个常量,而实例化一个新的是不可以的。

The expression being assigned to optional parameter `v2' must be a constant or default value