![]() |
1
17
这有点像询问您是应该从一个方法返回一个字符串,还是接受一个StringBuilder并附加到它上面。答案取决于用例是什么。 调用方是否希望使用包含某些数据的现有流调用方法?他们想用同一个流多次调用它吗?如果是这样,那么使用memoryStream的版本将更加高效。另一方面,如果他们只需要数据一次,将其作为内存流(或者更简单地说,作为字节数组)返回可能更合适。 不幸的是,从描述上看,我们无法真正判断到底发生了什么。当然,您可以实现两个重载,并从另一个重载中调用一个重载。 |
![]() |
2
7
经过 将内存流转换为函数并 返回 函数的内存流不能互换使用。您描述的方法有两个不同的用途。
你说的是两种不同的东西,苹果和桔子。 |
![]() |
3
3
我总是将流传递到函数中。这允许它处理调用者选择的任何流,例如直接进入文件而不进行任何缓冲。 |
![]() |
4
2
您可以从函数中安全地返回它。你得打电话
|
![]() |
5
1
你的第二个更好。如果可能的话,我总是尽量避免在函数内部改变对象。 |
![]() |
6
1
经过更多的思考,我认为它归结为
如果答案是“创建流”,请让它返回流。如果修改了流,则传入该流。 如果答案是“两者兼而有之”,那么分割方法可能是有意义的,这样它就只有一个责任。 |
![]() |
7
0
没有什么区别。在第一个实例中,调用者将控制内存流,在第二个实例中,您可以这样做:
最重要的是要记住正确处理它。 |
![]() |
8
0
我更喜欢注射式的。它消除了代码和MemoryStream之间的直接耦合,使其更具可测试性。
现在,我可以用任何实现流的类(包括模拟类)测试foo。 通常,我会在类的构造函数中进行注入,而不是在单个方法上进行注入,但其思想基本上是相同的。
|
![]() |
9
0
我倾向于第一个原因有两个:
也就是说,如果主要目的是
|
![]() |
10
0
因为流是需要显式处理(内存、文件、网络)的资源,所以最好使用raii方法来处理它们。这意味着初始化它们的函数必须与发布负责(我们在C中有“使用”keyord)。要启用这个模式,我说接受流作为参数。这样,调用方就可以决定何时创建和释放流。当您处理它时,使您的方法接受任何流实现;它似乎不需要只对memorystream有效。 |
|
Robert King · Unity C#语法问题-转换位置 1 年前 |
![]() |
JBryanB · 如何从基本抽象类访问类属性 1 年前 |
|
law · 检查答案按钮的输入字符串格式不正确 2 年前 |
![]() |
i_sniff_ket · 在unity之外使用unity类 2 年前 |