假设我们有方法
internal static void NotNull<T>(T value)
where T : class
{
if (value == null)
{
throw new ArgumentNullException();
}
}
有没有办法告诉Resharper的静态分析传递给此方法的值在之后永远不会为空?
答案 0 :(得分:4)
有两种方法可以实现这一目标:
[JetBrains.Annotations.ContractAnnotation("halt <= null")]
public void NotNull(object obj)
{
// ...
}
和
之类的扩展方法[JetBrains.Annotations.NotNull]
public static T NotNull<T>(this T obj)
{
// ...
return obj;
}
我个人更喜欢第二个,因为它很流利,你可以继续使用你的代码:)