1

在 C#.NET 中谁能告诉我使用引用参数(例如 ref、out)而不是使用全局变量的原因?正如我所看到的,一切都可以通过只使用一个全局变量来轻松处理,我们必须在不同的函数中使用相同的变量值。所以我想不出我们只能选择使用引用参数而不是全局变量的情况。如果你能给我一个发生这种情况的场景,我会很高兴。提前致谢。

4

2 回答 2

3

它只是糟糕的编程!

假设您完成了程序的工作,然后一个月后您想回来添加其他功能。但是您不小心在新类中使用了该全局变量。

现在它会更改您不想更改的其他类中的内容。而且你有更多的错误,你不知道从哪里开始,因为你一个月没有接触代码。

还有关于这个词的另一件事ref——它的目标之一是在你返回变量之前强制你初始化它。这样,编译器确保您不使用包含垃圾的变量,这会破坏代码。当你使用一个全局变量时,你可以在那个未初始化的全局变量中使用,你会得到一个异常。

因此,如果您知道何时以及如何使用refout- 使用它们。

并且永远不要使用全局变量。糟糕的编程。

祝你好运!

于 2013-06-02T05:39:05.027 回答
2

全局变量和参数修饰符几乎没有共同之处。首先,在 C# 中最接近全局变量的是使用公共静态字段。

参数修饰符改变方法参数的处理方式。out参数就像一个附加的返回变量,它在方法中接收它的值,编译器保证这一点。ref参数用于输入和输出。它可以在方法内部进行修改,但不是必须的。

全局变量就像任何其他变量一样,除了它可以从任何地方访问并且只有一个实例。

当然,全局变量可以用来实现与参数修饰符类似的行为,但只是乍一看。与 out 参数不同,编译器不会保证您为其赋值。它更难使用、维护和记录,也许最重要的是它会在多线程环境中完全失败,除非您花费大量额外的工作来访问变量线程安全。

于 2013-06-02T07:02:12.160 回答