c# - IDE0059 为“i”分配了不必要的值
问题描述
此代码在 Visual Studio 2019 中生成信息消息:*严重性代码描述项目文件行抑制状态抑制状态详细描述消息 IDE0059
为“i”分配了不必要的值
避免在您的代码中进行不必要的赋值,因为这些可能表示冗余的值计算。如果值计算不是多余的并且您打算保留分配,则将分配目标更改为名称以下划线开头并且可选地后跟整数的局部变量,例如'_','_1','_2 ' 等。这些被视为特殊的丢弃符号名称。*
代码片段工作正常,这是消息 IDE0059,让我感到困扰。如果可能的话,我不想压制它。
private static XmlDocument LoadXmlFromFile(string xmlPath)
{
XmlDocument doc = new XmlDocument();
int i = 2;
while (true)
{
try
{
using (Stream fileStream = System.IO.File.Open(xmlPath, FileMode.Open, FileAccess.Read, FileShare.None))
{
doc.Load(fileStream);
}
return doc;
}
catch (IOException) when (i > 0)
{
i--;
Thread.Sleep(100);
}
}
}
这里有什么问题?是误报还是我错过了什么?
此代码还在 VS2019 中产生警告 IDE0059:
private static XmlDocument LoadXmlFromFile(string xmlPath)
{
XmlDocument doc = new XmlDocument();
int i = 2;
while (true)
{
try
{
using (Stream fileStream = File.Open(xmlPath, FileMode.Open, FileAccess.Read, FileShare.None))
{
doc.Load(fileStream);
}
return doc;
}
catch (IOException)
{
if (i == 0)
{
throw;
}
i--;
Thread.Sleep(100);
}
}
}
解决方案
根据您的描述,您似乎想在经过时结束睡眠
没有抛出警告的两个异常。
我建议你可以使用 if 语句来做到这一点。
class Program
{
static void Main(string[] args)
{
string path = "D:\\teest1.xml";
var doc = LoadXmlFromFile(path);
}
private static XmlDocument LoadXmlFromFile(string xmlPath)
{
XmlDocument doc = new XmlDocument();
int i = 2;
while (i>=0) // change the while sentence
{
try
{
using (Stream fileStream = System.IO.File.Open(xmlPath, FileMode.Open, FileAccess.Read, FileShare.None))
{
doc.Load(fileStream);
}
return doc;
}
catch (IOException ex)
{
if (i == 0)
{
throw ex;
}
i--;
Thread.Sleep(200);
}
}
return doc;
}
}
推荐阅读
- c# - 如何在 IdentityServer4 上添加电话号码声明
- java - Springboot:可以在运行时更改DTO,而从api返回的对象中不存在空值吗?
- reactjs - 无法运行“npm run deploy” throw er;//在将 React 应用程序部署到 Github 时未处理的“错误”事件
- git - 如何从 github 存储库中删除旧的提交和贡献者?
- c++ - 如何在 QML 的 TreeView 中自定义子项?
- postgresql - postgresql:regexp_substr - 获取分隔符出现之间的子字符串
- amazon-web-services - 为什么我在尝试从 lambda 而不是从查询编辑器访问极光无服务器数据库时得到 403?
- memory - 为什么不读取内存内容?- verilog 数字系统设计
- python - 是否可以仅使用 python 制作软件?
- excel - 如何在excel的复合公式中将数字更改为日期