【发布时间】:2013-05-28 14:50:58
【问题描述】:
在 C#.NET 中谁能告诉我使用引用参数(例如 ref、out)而不是使用全局变量的原因?正如我所看到的,一切都可以通过只使用一个全局变量来轻松处理 我们必须在不同的函数中使用相同的变量值。所以我想不出我们只能选择使用引用参数而不是全局变量的情况。如果你能给我一个发生这种情况的场景,我会很高兴。提前致谢。
【问题讨论】:
-
我不太确定这里的类比。这就像把苹果比作法拉利。您认为 ref/out 以何种方式与全局变量具有可比性?
-
全局变量非常难以推理。也不是说 ref/out 适合所有情况,但与全局状态相比?
-
使用 ref 变量(我很少这样做)比使用全局变量更受欢迎,因为尝试使用使用全局变量的程序来追踪错误非常困难。您不知道哪些过程可能会影响变量,而通过 ref 传递的变量更容易追踪,因为您知道可能影响其状态的过程。
-
当您将局部变量或字段作为
ref参数传递给方法时,您仅授予该特定方法“权限”以读取和写入您的变量或字段.使用局部变量,您不能只是将变量公开。使用实例字段,您可以也将字段设为public(不是很好的做法),但仍需要您调用的方法引用该字段所在的实例。并且该方法需要知道并“硬编码”要修改哪个字段。使用static字段创建public,不需要引用。 -
全局变量的一大优势是速度。您可以简单地运行一些带有和不带有全局的基准来查看差异。不好的做法,但性能不错
标签: c# .net pass-by-reference out ref