ref & out 如何跨方法使用局部变量?
How ref & out works across methods with local variables?
我们不能为方法中的字段指定访问修饰符,我怀疑这样做的原因是方法中的字段(即局部变量)应该只在该特定方法中具有作用域,因此无需指定访问修饰符。
class Program
{
public static void Main()
{
int Y;
Test(out Y);
}
private static void Test(out int X)
{
X = 17;
}
}
问题:
如果方法字段的范围在该方法内,那么 ref
和 out
如何跨方法工作?我知道它们是 passed by reference
,但是当 CLR 的范围仅限于该特定方法时,CLR 如何传递该变量地址(引用)?
这些 local variables 只能在方法的代码块 (methodName{..code-block-here..}
) 范围内访问,您不能为它们指定任何其他可访问级别 - 从外面的世界。
尝试在方法中声明 private
变量毫无意义。因为默认情况下你不能访问方法外的变量。在方法中声明的变量称为局部变量。所以允许给它一个访问修饰符
是没有任何意义的
修饰符用于控制外部class对变量的访问。
例如,您可能不希望除您自己的任何 class 访问变量,或者您只希望同一包中的子classes 和 classes 访问访问它。这就是修改器的工作。
然而,方法变量不能被该方法之外的任何东西访问,并且不会存在超过方法完成所需的时间,因此在方法内部使用修饰符真的没有意义.变量访问是固定的,因为它的范围非常有限。
If scope of method field is within that method then how ref and out works across methods? I know they are passed by reference but how CLR can pass that variables address(reference) when its scope is limited to that particular method?
变量地址未绑定到它 scope.When 你有地址,你可以从任何地方访问该地址中的对象 want.This 只要你在 ref
或 out
参数。编译器使用它来访问和操作实际的 data.So 范围与它无关。
我们不能为方法中的字段指定访问修饰符,我怀疑这样做的原因是方法中的字段(即局部变量)应该只在该特定方法中具有作用域,因此无需指定访问修饰符。
class Program
{
public static void Main()
{
int Y;
Test(out Y);
}
private static void Test(out int X)
{
X = 17;
}
}
问题:
如果方法字段的范围在该方法内,那么 ref
和 out
如何跨方法工作?我知道它们是 passed by reference
,但是当 CLR 的范围仅限于该特定方法时,CLR 如何传递该变量地址(引用)?
这些 local variables 只能在方法的代码块 (methodName{..code-block-here..}
) 范围内访问,您不能为它们指定任何其他可访问级别 - 从外面的世界。
尝试在方法中声明 private
变量毫无意义。因为默认情况下你不能访问方法外的变量。在方法中声明的变量称为局部变量。所以允许给它一个访问修饰符
修饰符用于控制外部class对变量的访问。
例如,您可能不希望除您自己的任何 class 访问变量,或者您只希望同一包中的子classes 和 classes 访问访问它。这就是修改器的工作。
然而,方法变量不能被该方法之外的任何东西访问,并且不会存在超过方法完成所需的时间,因此在方法内部使用修饰符真的没有意义.变量访问是固定的,因为它的范围非常有限。
If scope of method field is within that method then how ref and out works across methods? I know they are passed by reference but how CLR can pass that variables address(reference) when its scope is limited to that particular method?
变量地址未绑定到它 scope.When 你有地址,你可以从任何地方访问该地址中的对象 want.This 只要你在 ref
或 out
参数。编译器使用它来访问和操作实际的 data.So 范围与它无关。