在您看来,从函数返回新分配的内存流或将其传递给函数是否更好?例如,
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(或者更简单地,作为字节数组)返回可能更合适.
不幸的是,从描述中我们无法确切地知道发生了什么.当然,您可以将两者都实现为重载并从另一个中调用一个.
这有点像询问是否应该从方法返回一个字符串或者接受一个StringBuilder并附加到它.答案取决于用例是什么.
是否可能调用者想要使用包含某些数据的现有流来调用您的方法?他们可能想使用相同的流多次调用它?如果是这样,采用MemoryStream的版本将更有效.另一方面,如果他们只想要数据一次,那么将其作为MemoryStream(或者更简单地,作为字节数组)返回可能更合适.
不幸的是,从描述中我们无法确切地知道发生了什么.当然,您可以将两者都实现为重载并从另一个中调用一个.
将内存流传递到函数并返回函数的内存流不应互换使用.您描述的方法有两个不同的用途.
将函数传递给函数是为了让函数对函数执行某些操作.
从函数返回一些东西是调用者应该对结果做某事.
你在谈论两种不同的东西,苹果和橘子.