让我们以NetworkStream类为例。
...
byte[] c = new byte[1];
networkstream1.Read(c,0,1);
NetworkStream.Read如何在不使用某种输出参数的情况下将数据放入变量 c ?
签名应为:
Stream.Read(out byte[] buffer, int offset, int count);
必须使用指针吗?
如果有人可以详细说明这个(基础)机制,谢谢:)
答案 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
方法只是通过传递时引用的引用修改数组方法叫做