C# 无法分配给';arg';因为它是一个';foreach迭代变量';
arg以红色下划线,表示arg=localpathC# 无法分配给';arg';因为它是一个';foreach迭代变量';,c#,C#,arg以红色下划线,表示arg=localpath 无法分配给“arg”,因为它是“foreach迭代变量” if (args != null) { foreach (var arg in args) { //download files locally if needed if (!File.Exists(arg)) { try { var local
无法分配给“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);
}
}
}
我刚刚解决了自己的问题。。感谢将军也发布了他们的答案版本
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);
}
}
if(args!=null)
{
for(int i=0;i
如果确实需要更改循环中的项目,请使用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;
}
你想做的是“看起来”(这个词用得很松散)
var newArgs = args.Select(x => Helper.DownloadLocally(x, Helper.ApplicationDirectory));
foreach (var arg in newArgs)
powerShell.AddArgument(arg);
您试图在这里完成什么?为什么要尝试分配给
arg
?在循环运行时,不允许更改循环的迭代器。使用另一个变量。我将把你的变量标记为答案。我也发布了我的答案版本。
var newArgs = args.Select(x => Helper.DownloadLocally(x, Helper.ApplicationDirectory));
foreach (var arg in newArgs)
powerShell.AddArgument(arg);