arg用红色下划线标明arg = localpath
无法分配给'arg',因为它是'foreach迭代变量'
if (args != null)
{
foreach (var arg in args)
{
//download files locally if needed
if (!File.Exists(arg))
{
try
{
var localPath = Helper.DownloadLocally(arg, Helper.ApplicationDirectory);
arg = localPath;
}
catch (Exception)
{
throw;
}
}
foreach (var arg in args)
{
powerShell.AddArgument(arg);
}
}
}
答案 0 :(得分:2)
如果您确实需要在循环中更改项目,请改用for
,因为它不使用枚举器
for (var index = 0; index < args.Length; index++)
{
//download files locally if needed
if (!File.Exists(args[index]))
{
var localPath = Helper.DownloadLocally(args[index], Helper.ApplicationDirectory);
args[index] = localPath;
}
然而,您还有更多要做的事情
循环中没有意义的循环
foreach (var arg in args)
{
powerShell.AddArgument(arg);
}
您想做的“似乎”(宽松地使用)是
var newArgs = args.Select(x => Helper.DownloadLocally(x, Helper.ApplicationDirectory));
foreach (var arg in newArgs)
powerShell.AddArgument(arg);
答案 1 :(得分:0)
我刚刚解决了自己的问题。.感谢TheGeneral也发布了他们的答案版本。
if (args != null)
{
for (int i = 0; i < args.Length; i++)
{
if (!File.Exists(args[i]))
{
try
{
var localPath = Helper.DownloadLocally(args[i], Helper.ApplicationDirectory);
args[i] = localPath.ToString(); ;
}
catch (Exception)
{
throw;
}
}
}
foreach (var arg in args)
{
powerShell.AddArgument(arg);
}
}