当前位置:  开发笔记 > 编程语言 > 正文

从函数返回内存流

如何解决《从函数返回内存流》经验,为你挑选了2个好方法。

在您看来,从函数返回新分配的内存流或将其传递给函数是否更好?例如,

void Foo(MemoryStream m) 
{ 
   m.Write(somebuffer, 0, somebuffer.Length); 
}

要么

void MemoryStream Foo()
{
    MemoryStream retval = new MemoryStream();
    retval.Write(somebuffer, 0, somebuffer.Length);
    return retval;
}

Jon Skeet.. 19

这有点像询问是否应该从方法返回一个字符串或者接受一个StringBuilder并附加到它.答案取决于用例是什么.

是否可能调用者想要使用包含某些数据的现有流来调用您的方法?他们可能想使用相同的流多次调用它?如果是这样,采用MemoryStream的版本将更有效.另一方面,如果他们只想要数据一次,那么将其作为MemoryStream(或者更简单地,作为字节数组)返回可能更合适.

不幸的是,从描述中我们无法确切地知道发生了什么.当然,您可以将两者都实现为重载并从另一个中调用一个.



1> Jon Skeet..:

这有点像询问是否应该从方法返回一个字符串或者接受一个StringBuilder并附加到它.答案取决于用例是什么.

是否可能调用者想要使用包含某些数据的现有流来调用您的方法?他们可能想使用相同的流多次调用它?如果是这样,采用MemoryStream的版本将更有效.另一方面,如果他们只想要数据一次,那么将其作为MemoryStream(或者更简单地,作为字节数组)返回可能更合适.

不幸的是,从描述中我们无法确切地知道发生了什么.当然,您可以将两者都实现为重载并从另一个中调用一个.



2> Pop Catalin..:

将内存流传递到函数并返回函数的内存流不应互换使用.您描述的方法有两个不同的用途.

将函数传递给函数是为了让函数对函数执行某些操作.

从函数返回一些东西是调用者应该对结果做某事.

你在谈论两种不同的东西,苹果和橘子.

推荐阅读
郑谊099_448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有