Ham*_*jan 2 c# pass-by-reference
我使用过Java,C++ ,. Net.(以该顺序).当被问及关于面值的副值和副率时,我总是在这个问题上做得很好......也许是因为没有人深入研究它.现在我知道我看不到全貌.
我正在查看其他人编写的这部分代码:
XmlDocument doc = new XmlDocument();
AppendX(doc); // Real name of the function is different
AppendY(doc); // ditto
Run Code Online (Sandbox Code Playgroud)
当我看到这段代码时,我想:等一下,我不应该ref在doc变量前面使用一个(并相应地进行修改AppendX/Y?它的工作原理如同书面形式,但让我怀疑我是否真的理解了refC#中的关键字.
当我想到这一点时,我回想起早期的Java时代(大学介绍语言).我的一个朋友看了我写的一些代码,他有一个心理障碍 - 他一直在问我哪些东西是通过引用传递的,什么时候通过值传递.我无知的反应是这样的:Dude,Java中只有一种arg传递,我忘了它是哪一个:).冷静,不要过度思考,只需编码.
Java仍然ref没有它吗?然而,Java黑客似乎是富有成效的.无论如何,C++中的编码通过参考业务将我暴露给了整体,现在我很困惑.
应该ref在上面的例子中使用?
我猜测什么时候ref应用于值类型:基元,枚举,结构(这个列表中还有其他什么吗?)它会产生很大的不同.并且...当应用于对象时它不会,因为它全部是通过引用.如果事情如此简单,那么为什么编译器不会将ref关键字的使用限制为类型的子集.
说到对象,是否ref可以作为评论?好吧,我确实记得可能存在问题,null并且ref对于初始化方法中的多个元素也很有用(因为你不能像在Python中一样容易地返回多个元素).
谢谢.
| 归档时间: |
|
| 查看次数: |
2106 次 |
| 最近记录: |