Stream.Read(byte [] buffer,int offset,int count)如何在没有输出参数的情况下工作?

时间:2016-08-20 18:55:39

标签: c#

让我们以NetworkStream类为例。

...
byte[] c = new byte[1];
networkstream1.Read(c,0,1);

NetworkStream.Read如何在不使用某种输出参数的情况下将数据放入变量 c

签名应为:

Stream.Read(out byte[] buffer, int offset, int count);

必须使用指针吗?

如果有人可以详细说明这个(基础)机制,谢谢:)

1 个答案:

答案 0 :(得分:0)

您正在传递对该方法将要填充的数组的引用,这是一个示例,说明它是如何工作的

public static void FillArrayWithA(char[] arr)
{
    for(var i = 0;i<arr.Length;i++)
    {
        arr[i]='A';
    }
}


public static void Main(string[] args)
{
     var newArr = new char[10];
     FillArrayWithA(newArr);
     Console.WriteLine(new string(newArr));
}

out和ref用于修改实际传递的变量,这是一个发生这种情况的例子:

public static void NewArrayWithA(out char[] arr)
{
    arr = new char[10];
    for(var i = 0;i<arr.Length;i++)
    {
        arr[i]='A';
    }
}


public static void Main(string[] args)
{
     char[] newArr;
     FillArrayWithA(out newArr);
     Console.WriteLine(new string(newArr));
}

与第一个示例不同,变量newArr中保存的值通过NewArrayWithA方法分配变量,FillArrayWithA方法只是通过传递时引用的引用修改数组方法叫做

相关问题