我有以下代码:
string acctStatus = account.AccountStatus.ToString();
if (!SettableStatuses().Any(status => status == acctStatus))
acctStatus = ACCOUNTSTATUS.Pending.ToString();
请注意,account.AccountStatus是类型为ACCOUNTSTATUS的枚举。在第二行中,ReSharper向我发出警告“访问已修改的闭包”,针对acctStatus。当我执行建议操作,将其复制到本地变量时,它会修改代码如下:
string acctStatus = realAccount.AccountStatus.ToString();
string s = acctStatus;
if (!SettableStatuses().Any(status => status == s))
acctStatus = ACCOUNTSTATUS.Pending.ToString();
为什么这种方式比我最初使用的更好或更可取?
编辑
它还建议将本地变量包装在数组中,具体方法如下:
string[] acctStatus = {realAccount.AccountStatus.ToString()};
if (!SettableStatuses().Any(status => status == acctStatus[0]))
acctStatus[0] = ACCOUNTSTATUS.Pending.ToString();
这对我来说似乎非常荒谬。