我有一个对象,即“服务器”,当程序控制超出范围时,它就会失去它。
因此,对于任何此类对象和对象的内存,当从作用域内调用函数时,对象是否会丢失?
像
void main void
{
if this and that
{ //scope
do this
call_func();
}
}//main ends
void call_func()
{
working
"utilise objects created in parent."
return;
}
call_func将无法查看父函数创建的内容?是吗?还是不?
答案 0 :(得分:1)
作为一般规则,范围在大括号之间。所以call_func中的任何东西都有自己的作用域,与父函数完全分开。
当控制返回到父函数时,调用函数之前在范围内的对象仍然在括号内的任何范围内。
子方法只能访问父类中的对象。在父方法中定义的对象仅在将它们(作为参数)专门传递给子项时才可用。
class testClass
{
private int classLevelInt;
private void Main()
{
int methodLevelInt;
if (someTest)
{
int bracketLevelInt;
// classLevelInt, methodLevelInt and bracketLevelInt all in scope
ChildMethod();
// classLevelInt, methodLevelInt and bracketLevelInt all in scope
}
// only classLevelInt and methodLevelInt are still in scope
}
private void ChildMethod()
{
// This method can see classLevelInt only
// If access to other ints is required they must be passed to the method
}
}
答案 1 :(得分:1)
call_func将无法查看父函数创建的内容?是吗?还是不?
想象一下这种情况:
void ParentMethod1()
{
object something1;
call_func();
}
void ParentMethod2()
{
object somethingdifferent1;
call_func();
}
void call_func()
{
object scopeObject;
}
您认为call_func
可以使用哪些对象?
如果call_func
是公开的并且从完全不同的程序集中调用,该怎么办?
基本上,函数( method )只能访问在其中创建,作为参数传递给它的任何变量,或者作为类级变量可用。