本文介绍了如何ReSharper的专有"表达始终是真实的"?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

看看下面的代码:

 私人无效美孚(对象吧)
{
型键入= bar.GetType();

如果(型!= NULL)//表达总是真
{
}
}

ReSharper的索赔键入绝不会。这是显而易见的我,因为那里总是将成为 A型,但如何ReSharper的知道吗?它怎么能知道一个方法的结果决不会



键入不是一个结构,因此不能说。如果该方法是由我写的则返回值可以肯定(不一定的G​​etType,而是别的东西)。



时ReSharper的够聪明的知道,只有特定的方法,结果将永远? (像有它永远不会返回null已知的.NET方法硬编码的列表)


解决方案

JetBrains的完美解释了ReSharper的是如何做到这一点在他们的。



从链接摘要(这个特殊的问题是关于 NotNullAttribute ):



StringFormatMethodAttribute (for methods that take format strings as parameters)
InvokerParameterNameAttribute (for methods with string literal arguments that should match one of caller parameters)
AssertionMethodAttribute (for assertion methods)
AssertionConditionAttribute (for condition parameters of assertion methods)
TerminatesProgramAttribute (for methods that terminate control flow)
CanBeNullAttribute (for values that can be null)
NotNullAttribute (for values that can not be null)
UsedImplicitlyAttribute (for entities that should not be marked as unused)
MeansImplicitUseAttribute (for extending semantics of any other attribute to mean that the corresponding entity should not be marked as unused)

这篇关于如何ReSharper的专有"表达始终是真实的"?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-24 17:03