c# - 我应该处理 StreamReaders/Writers 的副本吗
问题描述
所以我有一个以 StreamReader 作为变量的类。StreamReader 是通过构造函数设置的。当我使用这个类时,我在类之外创建了一个 StreamReader 并通过它。然后我处理通过类的构造函数传递的 StreamReader 实例。我需要在类中处理 StreamReader 实例吗?
代码:
private class Class1
{
private StreamReader Reader;
public Class1(StreamReader Reader)
{
this.Reader = Reader;
}
}
private class Class2
{
public void Test()
{
StreamReader Reader = new StreamReader(@"");
Class1 Test = new Class1(Reader);
Reader.Dispose();
//Do I need to dispose the Reader in Class1 aswell?
}
}
解决方案
您正在将 1 个实例传递给StreamReader
您的Class1
实例。它不会创建副本,它会传递该现有StreamReader
. 如果您要调用this.Reader.Dispose();
您的实例,您将在您可以在方法中创建Class1
的完全相同的实例上调用它。StreamReader
Test()
所以这个代码块的答案是No,没有必要Dispose
在同一个实例上再次调用。
推荐阅读
- clojure - 从 3 个集合中获取每个值组合的最有效方法是什么?
- ios - 如何从 collectionView 中的单元格中仅重新加载一项?斯威夫特 4
- python - 从字符串列表中的每个项目中提取字符串的一部分(Python)
- html - 让文本跨越图像
- node.js - 错误:找不到模块“neo4j-driver/types/v1”
- sql - SQL(DB2)使用 Timestampdiff 和 Cast 以小时为单位的两个日期之间的差异
- java - 需要调用一个数组并在不同的类中打印它
- powershell - 尝试使用 Powershell 从 csv 导入信息,但不幸的是有些结果出错了
- email - PHPMailer可以为每个收件人添加不同的问候语吗
- javascript - jquery 如何写 if (window.width() < 1200 && after window.resize() window.width() > 1200){}