Dim*_* C. 1 c# parameters ref out
当C#函数具有输出参数时,您可以按如下方式清除:
private void f(out OutputParameterClass outputParameter);
Run Code Online (Sandbox Code Playgroud)
这表明在调用函数时不必初始化参数.但是,在调用此函数时,您必须重复out关键字:
f(out outputParameter);
Run Code Online (Sandbox Code Playgroud)
我想知道这有什么好处.为什么有必要重复部分功能规范?有人知道吗?
Jon*_*eet 27
这意味着你知道你在做什么 - 你承认它是一个out参数.你是否真的希望完全不同的行为无声地发生?ref顺便说一句,情况也是如此.
(你也可以根据by-value vs out/ref重载,但我不推荐它.)
基本上,如果你有一个(未捕获的)局部变量并且你将它用作非out/ref参数,你就知道该变量的值不会在方法中改变.(如果它是一个引用类型变量,那么它引用的对象中的数据可能会被更改,但这是非常不同的.)
这避免了你在C++中遇到的情况,你不知不觉地通过引用传递了一些东西,但是假设值没有改变......