【发布时间】:2015-05-11 17:24:39
【问题描述】:
我们不能为方法中的字段指定访问修饰符,我怀疑这样做的原因是方法内的字段(即局部变量)应该仅在该特定方法内具有范围,因此无需指定访问修饰符.
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 的范围仅限于特定方法时,它如何传递该变量地址(引用)?
【问题讨论】:
-
因为它没有意义。局部变量只能在其声明的范围内访问。
-
@Selman22 - 很好,这就是我在第一行中所写的内容(但可能反对者没有阅读整个问题)。但是如何跨方法访问
ref和out? -
@RahulSingh 它们是通过引用传递的,与其他参数不同。编译器通过引用,你可以认为它是变量的地址。这就是您访问内存中原始值的方式。顺便说一句,您可能应该用您的实际问题更改标题。
-
@Selman22 - 已更新。请澄清我的疑问。
标签: c# methods access-modifiers