gpt4 book ai didi

c# - 使用语句 FileStream 和/或 StreamReader - Visual Studio 2012 警告

转载 作者:IT王子 更新时间:2023-10-29 03:59:56 24 4
gpt4 key购买 nike

新的 Visual Studio 2012 正在提示我一直使用的常见代码组合。我知道这似乎有点矫枉过正,但我​​在我的代码中做了以下“只是为了确定”。

using (var fs = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
{
using (var sr = new StreamReader(fs))
{
// Code here
}
}

Visual Studio 正在“警告”我我不止一次处理 fs。所以我的问题是,正确的写法是:

using (var fs = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
{
var sr = new StreamReader(fs);
// do stuff here
}

或者我应该这样做(或其他未提及的变体)。

var fs = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);

using (var sr = new StreamReader(fs))
{
// Code here
}

我在 StackOverflow 中搜索了几个问题,但没有找到直接解决这种组合的最佳实践的问题。

谢谢!

最佳答案

下面是如何Microsoft recommends正在做。它又长又笨重,但安全:

FileStream fs = null;
try
{
fs = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
using (TextReader tr= new StreamReader(fs))
{
fs = null;
// Code here
}
}
finally
{
if (fs != null)
fs.Dispose();
}

此方法将始终确保处理所有应处理的内容,尽管可能会抛出异常。例如,如果 StreamReader 构造函数抛出异常,FileStream 仍将被正确处理。

关于c# - 使用语句 FileStream 和/或 StreamReader - Visual Studio 2012 警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12000136/

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