控制台应用程序在将值设置为变量并替换它时停止调试
本文关键字:替换 调试 变量 应用程序 设置 控制台 | 更新日期: 2023-09-27 18:33:14
我已经开始构建一个简单的控制台应用程序,但遇到了一些奇怪的行为。 我已经将问题隔离到下面的代码中。 由于某种原因,当执行 s.replace 行时,我立即在输出中看到以下内容:"'appname.vshost.exe'(托管(:加载了'C:''Windows''assembly''GAC_MSIL''System.Configuration''2.0.0.0__b03f5f7f11d50a3a''System.Configuration.dll'",然后"程序'[17680] appname.vshost.exe:托管'已退出,代码为 -2147023895 (0x800703e9(。
调试已停止。 arg for path 中的值是文件所在的完整 UNC 路径。 我想剥离路径=并使用路径值。 我是否跳过了某处的某些内容,而 VS 没有给我例外? 我使用VS 2008和2010都存在相同的问题。 这是因为 s 是参数吗?
foreach (string s in args)
{
if ((s != "") && (s.ToString().ToLower().Contains("path=")))
{
string a = @"''computer'dir'";
a.Replace("path=", "");
}
}
这可能是一个视觉工作室问题,因为它似乎发生在我分配值的任何字符串上。 我只是在下面添加了删除替换并得到了相同的响应:
string a = @"value";
路径示例为 ''计算机''目录 1''目录 2''
我已经根据建议更新了代码,但上述仍然存在相同的问题。 替换代码行失败。
我不知道
这是否是错误的源头,但string.Replace
返回一个新字符串 - 它不会修改底层字符串。 另外,在检查字符串是否包含特定子字符串后,您将检查空值。如果要更新集合中的字符串,正确的循环是:
for(int i=0; i < args.Length; args++)
{
s = args[i];
if (s != null && s.ToLower().Contains("path="))
args[i] = s.Replace("path=", "");
else
throw new Exception("Missing file path in command line");
}