我有以下代码:

MemoryStream foo(){
    MemoryStream ms = new MemoryStream();
    // write stuff to ms
    return ms;
}

void bar(){
    MemoryStream ms2 = foo();
    // do stuff with ms2
    return;
}

我分配的MemoryStream是否有可能在以后无法处理?

我得到了同行评议,坚持要我手动关闭它,但我找不到信息来判断他的观点是否正确.

推荐答案

如果什么东西是可丢弃的,你应该总是把它丢弃.您应该在bar()方法中使用using语句来确保ms2被释放.

垃圾收集器最终会将其清理干净,但调用Dispose始终是一种良好的做法.如果在代码上运行FxCop,它会将其标记为警告.

.net相关问答推荐

PowerShell中窗体定时器和系统定时器的统一处理

使用 DataDog 收集 OpenTelemetry 跟踪

无法使用 int.Parse 从字符串转换值

如何找到windows服务exe路径

CurrentCulture、InvariantCulture、CurrentUICulture 和 InstalledUICulture 之间的区别

使用字典作为数据源绑定组合框

在 WPF 窗口中获取当前聚焦的元素/控件

Automapper:使用 ReverseMap() 和 ForMember() 进行双向映射

如何正确停止BackgroundWorker

C# 相当于 Java 的 <?在泛型中扩展 Base>

Mono 是树莓派

变量MyException已声明但从未使用

将 StreamReader 返回到开头

什么是 ToString("N0") 格式?

CryptographicException 未处理:系统找不到指定的文件

如何从头开始以编程方式配置 log4net(无配置)

Guid.Parse() 或 new Guid() - 有什么区别?

功能说明

如何判断对象是否已在 C# 中释放

通过继承扩展枚举