【发布时间】:2011-07-30 13:52:28
【问题描述】:
我相信我在 ReSharper 中发现了一个错误。假设我有如下代码:
int[] someArray = new int[10];
while (someArray != null)
{
//perhaps some other usage of someArray here, but not assigning it.
SomeMethod(ref someArray );
}
如果局部变量 someArray 在其作用域内未分配给 null,则语句 someArray != null 将始终为真。但是,当该变量作为 ref 参数提供给另一个方法时,情况并非如此,因为它可以在该方法中被分配给 null。然后 ReSharper 错误地假定 someArray != null 仍然始终为真。
我想我会分享这些信息,因为我不确定我应该如何处理这些信息。首先,我希望有人验证此错误,然后将其发送给 JetBrains?
【问题讨论】:
-
而且我确实意识到,这种等待另一种方法将变量设置为 null 的 while 循环模式远非审美,但这不是重点。
-
看起来循环内的其他代码可能会触发它。内部是否有中断、返回或继续控制语句?
-
是的,我做到了。我现在没有确切的代码,我会在几个小时后发布。我还应该向 Kirk Woll 提一下,我没有准确测试我粘贴在问题中的代码,所以确实可能是由周围的代码引起的。
标签: c# resharper expression-evaluation