【发布时间】:2015-11-19 17:59:17
【问题描述】:
好吧,这可能是一个非常愚蠢的问题,但无论如何我都会冒我的代表的风险。我对编程很陌生,所以放轻松吧;) 所以当我遇到一些我不太明白的事情时,我才进入 TCP。 具体来说:
int length = Socket.Receive(MyByteArray);
据我了解,此方法返回接收到的数据的长度并将接收到的数据写入我的字节数组。那么它如何在没有我告诉它的情况下写入我的字节数组呢?经过一些研究,我了解到您可以使用引用来做这种事情,但这种方法不需要“ref MyByteArray”,这让我感到困惑。这是一种不同的方法还是方法内部发生了什么(duh)?
在此先感谢你这个非常棒的人。
【问题讨论】:
-
对引用类型和值类型做一些研究。数组是引用类型,因此当您将一个传递给函数时,它具有对实际对象的 reference 并且可以更改其属性。
-
你告诉它通过将你的字节数组传递给它来写入你的字节数组。
-
不解释为什么,很容易自己验证它有效:ideone.com/HrLDZ3
-
数组是引用类型,而不是值类型(即使它是值类型的数组),所以如果数组是预先分配的,则不需要使用
ref传递。跨度>