使用 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[]是引用类型;您正在传递对字节类型数组的引用。 您可以改变其内容,但不能改变引用本身。