首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在C#中使用引用参数而不是全局变量的原因

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

Stack Overflow用户
提问于 2013-06-02 13:28:10
回答 2查看 2.6K关注 0票数 1

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-02 13:39:05

这只是一个糟糕的编程!

假设你完成了程序的工作,然后一个月后,你想回来添加另一个功能。但是您在新类中意外地使用了该全局变量。

现在它改变了另一个类中你不想改变的东西。而且你有更多的bug,你不知道从哪里开始,因为你一个月都没有接触过代码。

关于ref word还有一件事-它的目标之一是强制您在返回变量之前对其进行初始化。这样,编译器就可以确保你不会使用包含垃圾的变量,因为这会导致代码崩溃。当你使用一个全局变量时,你可以在未初始化的全局变量中使用,你会得到一个异常。

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

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

祝好运!

票数 3
EN

Stack Overflow用户

发布于 2013-06-02 15:02:12

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

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

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

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16880049

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档