gpt4 book ai didi

C# StreamReader 尝试/最终

转载 作者:可可西里 更新时间:2023-11-01 08:31:27 33 4
gpt4 key购买 nike

我今天有一个关于 StreamReader 类的问题。具体使用文件名参数初始化此类例如:

TextReader tr = new StreamReader(fileName);

显然,当此操作完成后,像这样关闭流很重要:

 tr.Close();

我想试试这个/最后,问题是我找不到办法做到这一点。以下是我发现的一些不起作用的变体:

    try
{
var serializer = new XmlSerializer(type);
TextReader tr = new StreamReader(fileName);
var obj = serializer.Deserialize(tr);
}
finally
{
tr.Close();
}

更糟的是:

     TextReader tr;  
try
{
var serializer = new XmlSerializer(type);
tr = new StreamReader(fileName);
var obj = serializer.Deserialize(tr);
}
finally
{
tr.Close();
}

那么是否可以在 finally 中关闭 StreamReader?

最佳答案

最简单的方法是使用 using 语句:

using (TextReader tr = new StreamReader(fileName))
{
// ...
}

编译器会为你生成一个try-finally block ,并在finally中放入调用Close(实际上是Dispose)的代码。

如果您需要明确地拼出 finally,您的第二个示例将起作用,除了您需要强制初始化 tr:

TextReader tr = null;

你当然会想要检查 finally block 中的 tr != null,以防在 tr = new StreamReader(...) 之前发生异常被执行了。

关于C# StreamReader 尝试/最终,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2166278/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com