在C#.NET中,有人能告诉我为什么要使用引用参数(比如ref,out)而不是使用全局变量吗?正如我所看到的,只要使用一个全局变量,就可以轻松地处理所有事情,在不同的函数中,我们必须使用相同的变量值。因此,我无法想象这样一种情况,即我们只能选择使用引用参数而不是全局变量。如果你能给我一个它发生的场景,我会很高兴。提前谢谢。
发布于 2013-06-02 05:39:05
这只是一个糟糕的编程!
假设你完成了程序的工作,然后一个月后,你想回来添加另一个功能。但是您在新类中意外地使用了该全局变量。
现在它改变了另一个类中你不想改变的东西。而且你有更多的bug,你不知道从哪里开始,因为你一个月都没有接触过代码。
关于ref
word还有一件事-它的目标之一是强制您在返回变量之前对其进行初始化。这样,编译器就可以确保你不会使用包含垃圾的变量,因为这会导致代码崩溃。当你使用一个全局变量时,你可以在未初始化的全局变量中使用,你会得到一个异常。
因此,如果您知道何时以及如何使用ref
和out
,请使用它们。
并且永远不要使用全局变量。糟糕的编程。
祝好运!
发布于 2013-06-02 07:02:12
全局变量和参数修饰符几乎没有什么共同之处。首先,在C#中,最接近全局变量的方法是使用公共静态字段。
参数修饰符更改处理方法参数的方式。out参数就像一个额外的返回变量,它在方法中接收它的值,编译器保证这一点。ref参数同时用于输入和输出。它可以在方法中修改,但不是必须的。
全局变量就像任何其他变量一样,只是它可以从任何地方访问,并且只有一个实例。
当然,全局变量可以用来实现与参数修饰符类似的行为,但只能乍一看。与out参数不同,编译器不会保证您为其赋值。它更难使用、维护和记录,也许最重要的是它在多线程环境中将完全失败,除非您花费大量额外的工作来确保对变量的访问是线程安全的。
https://stackoverflow.com/questions/16880049
复制