它理解如果断言是假的,Debug.Assert将抛出而不是继续,因此它知道断言在此之后是真的.
我想跟Trace.Assert一样的推理.是的,你可以继续,如果你继续经过这样一个警告,然后抛出一个空的那就是你的问题.我想摆脱那些虚假的可能的空引用消息.
我刚刚在ReSharper 9.1.3中使用以下示例代码对此进行了测试.
private void M(string a)
{
Trace.Assert(a != null); // or Debug.Assert(a != null);
if (a == null)
Console.WriteLine("a is null");
}
Run Code Online (Sandbox Code Playgroud)
R·汇报了Debug.Assert()与Trace.Assert()该Console.WriteLine()电话是"试探性地无法访问".出现这种情况,因为这两种方法都在ReSharper的注解外部注解与[ContractAnnotation("condition:false=>halt")](您可以通过敲击的方法,按Ctrl + Shift + F1并点击看到这个"[...]").
你有哪个版本的ReSharper /外部注释包?
顺便说一句:condition:false=>halt注释不是真的正确,因为a)你可以在DefaultTraceListener消息框中点击"忽略" 并继续执行b)它取决于Trace.Listeners配置(例如,如果你调用Trace.Listeners.Clear()或设置AssertUiEnabled属性为false,消息框将不会出现).
| 归档时间: |
|
| 查看次数: |
275 次 |
| 最近记录: |