D中的in
和out
关键字实际上意味着什么?通过查看使用这些参数的函数,我了解到in
关键字用于函数输入,out
关键字用于基本上通过引用传递的参数。
这种理解是否正确,他们实际允许或禁止程序员做什么?
答案 0 :(得分:8)
in
扩展为const scope
,意味着您无法更改变量(或其指向的任何内容),也不应该在任何地方保留对它的引用(在大多数情况下,scope
实际上并未实现虽然)。基本上,in
看起来,不要碰。
out
表示给定变量接收值。它与ref
非常相似 - 函数内部的变化也可以在外部看到 - 差异很小,即变量被初始化为它们的正常初始值,清除它们在调用函数之前的值。
基本上,void foo(out int a) {}
== void foo(ref int a) { a = 0; /* inserted automatically */ }