到目前为止我的理解如下:
价值传递
按值传递意味着传递参数的副本。
对该副本的更改不会更改原始版本。
通过参考
通过引用传递意味着传递对原始内容的引用。
对引用的更改会影响原始引用。
参考关键字
REF 告诉编译器该对象在进入函数之前已初始化。
REF 表示该值已经设置,因此该方法可以读取它并修改它。
REF 有两种方式,即输入和输出。
输出关键字
OUT 告诉编译器该对象将在函数内初始化。
OUT 表示该值尚未设置,因此必须在调用 return 之前设置。
OUT只是一种方式,那就是out。
Question
那么在什么情况下您会结合使用 ref 和 out 关键字,通过引用传递或通过值传递?
例子会有很大帮助。
非常感谢帮助。
你会never结合ref
and out
在 1 个参数上。它们的意思都是“通过引用传递”。
当然,您可以在一种方法中组合 ref 参数和 out 参数。
和...之间的不同ref
and out
主要在于intent。 ref 表示 2 路数据传输,out 表示 1 路。
但除了意图之外,C# 编译器还跟踪明确赋值,这也是最明显的区别。它还可以防止误用(读取)输出参数。
void SetOne(out int x)
{
int y = x + 1; // error, 'x' not definitely assigned.
x = 1; // mandatory to assign something
}
void AddTwo(ref int x)
{
x = x + 2; // OK, x is known to be assigned
}
void Main()
{
int foo, bar;
SetOne(out foo); // OK, foo does not have to be assigned
AddTwo(ref foo); // OK, foo assigned by SetOne
AddTwo(ref bar); // error, bar is unassigned
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)