C# 为什么我们需要“我们需要什么?”;“出去”;参数?
我知道“out”和“ref”类型一样,只是out变量不需要初始化。“out”参数还有其他用途吗?有时我看到它们在回调方法中的使用,但我始终不明白它们实际上是如何工作的,或者为什么我们需要它们而不是全局级别的ref变量?C# 为什么我们需要“我们需要什么?”;“出去”;参数?,c#,C#,我知道“out”和“ref”类型一样,只是out变量不需要初始化。“out”参数还有其他用途吗?有时我看到它们在回调方法中的使用,但我始终不明白它们实际上是如何工作的,或者为什么我们需要它们而不是全局级别的ref变量?out参数通过显式指定被调用方将初始化它们来强制调用方和被调用方(正在调用的函数)之间的约定。另一方面,当使用ref参数时,我们只知道被调用方可以修改它们,但调用方有责任对它们进行初始化。最大的例子之一是TryParse方法,您希望能够检查某些东西是否可以转换,通常如果可以转换,您
out
参数通过显式指定被调用方将初始化它们来强制调用方和被调用方(正在调用的函数)之间的约定。另一方面,当使用ref
参数时,我们只知道被调用方可以修改它们,但调用方有责任对它们进行初始化。最大的例子之一是TryParse方法,您希望能够检查某些东西是否可以转换,通常如果可以转换,您需要转换后的值。否则,这只是将对象传递回调用方法的另一种方式。如果方法正常完成,您为什么要在调用方法中初始化某些内容,而不保证被调用方法本身会覆盖变量?这些是out
参数给您带来的好处
基本上,我认为
out
参数是“oops,我需要返回多个值”指标。我更喜欢自己使用元组,但当然他们只在.NET4中使用。。。而且,如果没有明确的语言支持,它们的使用也会比理想的稍显笨拙。2主要区别在于