void func(){
bool is_do=false;
if(is_do==false){
is_do=true;
return;
}
if(is_do==true){
Debug.log("OK")
}
}
局部变量,不会打印“OK”,显然,是return的作用,跳出了函数func.
如果我换成一个全局变量A.IsDo
class A{
private static bool isdo=false;
public static bool IsDo
{
set
{
isdo= value;
}
get
{
return isdo;
}
}
void func(){
if(A.IsDo==false){
A.IsDo=true;
return;
}
if(A.IsDo==true){
Debug.log("OK")
}
}
就会打印“ok”,说明return没起作用。
请问什么原因?
全局变量情况复杂,局部变量在return之后就被销毁,下次进来再重新初始化为false,所以怎样都不会打印OK。类静态变量就复杂了,它一直存在,一直保持原来的值,只在最开始初始化为false一次,比如你这个func方法,执行过一次A.IsDo就会变成true,下次再调用func就会显示ok。
func是否打印ok不仅取决于A.isdo的初值,还取决于之前是否有人把它设置为true,就像func本身就把A.isdo设置为true,不像局部变量 一样会再次初始化为false,所以func是否打印ok不仅仅取决于func的内部逻辑,还取决于之前做了什么。