Visual Studio 似乎即使在更改代码时也会引发错误
Visual Studio seems to be throwing an error even when changing the code
这真的很奇怪,有点难以解释,所以请耐心等待。
我有一些非常基本的 c# 代码,它基于输入的字符串运行,然后将该字符串放入记录器中,然后用它进行一些搜索等。细节有些不重要。
因此,它一直抛出“索引超出数组范围”。即使出于测试目的,我在字符串数组使用之前手动设置了错误。
args[0] = "{XXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}";
logger.Info("guid:" + args[0]); //Errors here
_fetchxml = _myApp.getFetchXml("fileguid", args[0], new Guid(), new Guid());
我什至只是尝试在刚刚说 var a = "a"
的记录器之前放一行,但它在那一行给出了同样的错误,这让我觉得它与构建有关?
我已经清理并重建了解决方案,但没有成功,希望这是有道理的。
数组是不可变的(即固定大小),因此如果数组的长度为零,如果您尝试添加一个字符串并将其分配给它的第一个位置(即 non-existent).
如评论中所建议,您可以通过添加 if-block:
来简单地确认 args.Length 是否确实为 0
if(args.Length > 0)
{
args[0] = "{XXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}";
logger.Info("guid:" + args[0]); //No more Errors here?
_fetchxml = _myApp.getFetchXml("fileguid", args[0], new Guid(), new Guid());
}
else
{
logger.Info("guid: --no arguments found--");
// or if _fetchxml is crucial:
throw new ArgumentException("No guid given");
}
或者,如果仅用于测试,您可以完全替换 args 数组:
args = new[] { "{XXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}" };
或者更好的是,在 'Command line arguments' 中 'Start options' 下的项目属性的调试部分中设置参数(当然假设这些确实是命令行参数)。
这真的很奇怪,有点难以解释,所以请耐心等待。
我有一些非常基本的 c# 代码,它基于输入的字符串运行,然后将该字符串放入记录器中,然后用它进行一些搜索等。细节有些不重要。
因此,它一直抛出“索引超出数组范围”。即使出于测试目的,我在字符串数组使用之前手动设置了错误。
args[0] = "{XXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}";
logger.Info("guid:" + args[0]); //Errors here
_fetchxml = _myApp.getFetchXml("fileguid", args[0], new Guid(), new Guid());
我什至只是尝试在刚刚说 var a = "a"
的记录器之前放一行,但它在那一行给出了同样的错误,这让我觉得它与构建有关?
我已经清理并重建了解决方案,但没有成功,希望这是有道理的。
数组是不可变的(即固定大小),因此如果数组的长度为零,如果您尝试添加一个字符串并将其分配给它的第一个位置(即 non-existent).
如评论中所建议,您可以通过添加 if-block:
来简单地确认 args.Length 是否确实为 0if(args.Length > 0)
{
args[0] = "{XXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}";
logger.Info("guid:" + args[0]); //No more Errors here?
_fetchxml = _myApp.getFetchXml("fileguid", args[0], new Guid(), new Guid());
}
else
{
logger.Info("guid: --no arguments found--");
// or if _fetchxml is crucial:
throw new ArgumentException("No guid given");
}
或者,如果仅用于测试,您可以完全替换 args 数组:
args = new[] { "{XXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}" };
或者更好的是,在 'Command line arguments' 中 'Start options' 下的项目属性的调试部分中设置参数(当然假设这些确实是命令行参数)。