使用 C# 中的方法更改另一个作用域上的变量值
changing value of variable on another scope with method in C#
我在 .NET.Sockets 中遇到了名为“Recieve()”的奇怪方法
.Recieve() 方法在不使用 ref 或 out 的情况下更改 buff 变量。有人可以给我解释一下吗。
完整代码:
Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPAddress ipAddr = IPAddress.Any;
IPEndPoint endPoint = new IPEndPoint(ipAddr, 23000);
server.Bind(endPoint);
server.Listen(5);
Socket client = server.Accept();
Console.WriteLine("Client endpoint : " + client.RemoteEndPoint.ToString());
byte[] buff = new byte[128];
//this method confuses me Receive(buff)
int numberOfRecievedBytes = client.Receive(buff);
Console.WriteLine("Number of Recieved Bytes: " + Encoding.ASCII.GetString(buff, 0, numberOfRecievedBytes));
Byte[]是引用类型;您正在传递对字节类型数组的引用。
您可以改变其内容,但不能改变引用本身。
我在 .NET.Sockets 中遇到了名为“Recieve()”的奇怪方法 .Recieve() 方法在不使用 ref 或 out 的情况下更改 buff 变量。有人可以给我解释一下吗。
完整代码:
Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPAddress ipAddr = IPAddress.Any;
IPEndPoint endPoint = new IPEndPoint(ipAddr, 23000);
server.Bind(endPoint);
server.Listen(5);
Socket client = server.Accept();
Console.WriteLine("Client endpoint : " + client.RemoteEndPoint.ToString());
byte[] buff = new byte[128];
//this method confuses me Receive(buff)
int numberOfRecievedBytes = client.Receive(buff);
Console.WriteLine("Number of Recieved Bytes: " + Encoding.ASCII.GetString(buff, 0, numberOfRecievedBytes));
Byte[]是引用类型;您正在传递对字节类型数组的引用。 您可以改变其内容,但不能改变引用本身。