在C#中使用引用参数而不是使用全局变量的原因

时间:2013-06-02 05:28:10

标签: c# .net pass-by-reference out ref

在C#.NET中有人可以告诉我使用引用参数(例如ref,out)而不是使用全局变量的原因吗?正如我所看到的,只需使用全局变量即可轻松处理所有内容 我们必须在不同的函数中使用相同的变量值。所以我无法想到我们有唯一选择使用引用参数而不是全局变量的情况。如果你能给我一个发生这种情况的场景,我会很高兴的。提前谢谢。

2 个答案:

答案 0 :(得分:2)

它的编程很糟糕!

假设您已完成自己的计划,一个月后您又想回来添加其他功能。但是你不小心在新课程中使用了那个全局变量。

现在它改变了你不想改变的其他类中的东西。 你有更多的错误,你不知道从哪里开始,因为你没有触摸代码一个月。

关于ref字的另一件事 - 它的目标之一是在返回变量之前强制初始化变量。这样编译器确保您不使用包含垃圾的变量来破坏代码。 当您使用全局变量时,您可以在该未初始化的全局变量中使用,并且您将获得异常。

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

并且不要使用全局变量。糟糕的节目。

祝你好运!

答案 1 :(得分:1)

全局变量和参数修饰符几乎没有共同之处。首先,您可以使用公共静态字段获得C#中的全局变量。

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

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

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