gpt4 book ai didi

c# - 为什么 Stream.Read 不使用 out 参数?

转载 作者:太空宇宙 更新时间:2023-11-03 18:55:37 26 4
gpt4 key购买 nike

根据我的理解,Stream.Read(byte[] buffer, int offset, int count) 的缓冲区参数应该是一个输出参数,因为值被读入缓冲区,这似乎是合乎逻辑的传入了,但事实并非如此。

这是什么原因?我忽略了什么吗?

最佳答案

out 仅在从方法内分配实例并传回时使用。 Stream.Read 期望缓冲区在调用该方法之前已经由程序员创建。现有实例只是被传入,实例中的数据正在被修改,而不是引用本身。

虽然 out 允许您传入现有实例,但它保证将返回一个不同的实例。事实上,即使它允许您传入现有实例,您也无法从该方法中访问它的值。它将参数视为从未分配过。 "CS0269 Use of unassigned out parameter 'value' "

如果在方法返回之前没有给参数赋值,将会出现编译器错误。 "CS0177 The out parameter 'value' must be assigned to before control leaves the current method "

关于c# - 为什么 Stream.Read 不使用 out 参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46222802/

26 4 0