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

C# 在C中使用引用参数而不使用全局变量的原因,c#,.net,pass-by-reference,out,ref,C#,.net,Pass By Reference,Out,Ref,在C.NET中,有人能告诉我为什么使用ref、out等引用参数而不是使用全局变量吗?正如我所看到的,只要使用一个全局变量,一切都可以轻松处理 我们必须在不同的函数中使用相同的变量值。所以我想不出我们唯一的选择是使用参考参数而不是全局变量的情况。如果你能给我一个发生的场景,我会很高兴的。提前谢谢。编程太糟糕了 假设您完成了程序的工作,一个月后您想回来添加其他功能。但是您在新类中意外地使用了该全局变量 现在它改变了你不想改变的其他类中的内容。 你有更多的bug,你不知道从哪里开始,因为你已经一个月没

在C.NET中,有人能告诉我为什么使用ref、out等引用参数而不是使用全局变量吗?正如我所看到的,只要使用一个全局变量,一切都可以轻松处理
我们必须在不同的函数中使用相同的变量值。所以我想不出我们唯一的选择是使用参考参数而不是全局变量的情况。如果你能给我一个发生的场景,我会很高兴的。提前谢谢。

编程太糟糕了

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

现在它改变了你不想改变的其他类中的内容。 你有更多的bug,你不知道从哪里开始,因为你已经一个月没有接触代码了

关于ref单词还有一件事——它的目标之一是在返回变量之前强制初始化变量。通过这种方式,编译器确保您不会使用包含垃圾的变量,因为垃圾会压碎代码。 当您使用一个全局变量时,您可以在未初始化的全局变量中使用它,您将得到一个异常

因此,如果您知道何时以及如何使用ref和out,请使用它们

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


祝你好运

这就是糟糕的编程

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

现在它改变了你不想改变的其他类中的内容。 你有更多的bug,你不知道从哪里开始,因为你已经一个月没有接触代码了

关于ref单词还有一件事——它的目标之一是在返回变量之前强制初始化变量。通过这种方式,编译器确保您不会使用包含垃圾的变量,因为垃圾会压碎代码。 当您使用一个全局变量时,您可以在未初始化的全局变量中使用它,您将得到一个异常

因此,如果您知道何时以及如何使用ref和out,请使用它们

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


祝你好运

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

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

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


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

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

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

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


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

我不太确定这里的类比。这就像把苹果比作法拉利。您认为ref/out与全局变量有什么可比性?全局变量难以推理。也不是说ref/out对所有情况都是理想的,但与全局状态相比?使用ref变量(我很少使用)比使用全局变量更可取,因为使用全局变量的程序来跟踪bug要困难得多。您没有迹象表明哪些程序可能会影响va
变量,而通过ref传递的变量更容易跟踪,因为您知道可能影响其状态的过程。当您将局部变量或字段作为ref参数传递给方法时,您仅授予该特定方法读取和写入变量或字段的权限。使用局部变量时,不能只是将变量公开。对于实例字段,您也可以将该字段公开,这不是一个好的做法,但仍然需要调用的方法引用该字段所在的实例。该方法需要知道并硬编码要修改的字段。静态字段公开后,不需要引用。我不太确定这里的类比。这就像把苹果比作法拉利。您认为ref/out与全局变量有什么可比性?全局变量难以推理。也不是说ref/out对所有情况都是理想的,但与全局状态相比?使用ref变量(我很少使用)比使用全局变量更可取,因为使用全局变量的程序来跟踪bug要困难得多。您不知道哪些过程可能会影响变量,而通过ref传递的变量更容易跟踪,因为您知道可能会影响变量状态的过程。当您将局部变量或字段作为ref参数传递给方法时,您只会给出该特定方法,读取和写入变量或字段的权限。使用局部变量时,不能只是将变量公开。对于实例字段,您也可以将该字段公开,这不是一个好的做法,但仍然需要调用的方法引用该字段所在的实例。该方法需要知道并硬编码要修改的字段。静态字段公开后,无需参考。非常感谢。这对我帮助很大谢谢。这对我帮助很大谢谢。这对我帮助很大:非常感谢。这对我帮助很大: