gpt4 book ai didi

c# - 我如何告诉 Resharper 我的 IEnumerable 方法删除了空值?

转载 作者:可可西里 更新时间:2023-11-01 08:12:11 28 4
gpt4 key购买 nike

给定以下代码,Resharper 将正确地警告我 foo.Bar 上可能存在的 NullReferenceException,因为可枚举中可能有空元素:

IEnumerable<Foo> foos = GetFoos();
var bars = foos.Select(foo => foo.Bar);

满足静态分析器的一种方法是显式排除空值:

IEnumerable<Foo> foos = GetFoos().Where(foo => foo != null);

我发现自己经常输入 .Where(x => x != null),所以我将其包装在扩展方法中,现在我可以执行以下操作:

IEnumerable<Foo> foos = GetFoos().NotNull();

问题是 Resharper 不知道 NotNull() 会去除空值。有什么方法可以让 Resharper 了解这个事实吗?一般来说,有没有办法告诉 Resharper IEnumerable 返回的方法永远不会有空值(这样我就可以直接注释 GetFoos())?

我知道我可以使用 the NotNullAttribute告诉 Resharper 可枚举本身不为空,但我找不到关于可枚举的内容的内容。

编辑:扩展方法与您预期的完全一样:

[NotNull]
public static IEnumerable<T> NotNull<T>(this IEnumerable<T> enumerable)
{
return enumerable.Where(x => x != null);
}

最佳答案

你可以使用 ItemNotNullAttribute它告诉 ReSharper 集合中的任何项目都不能为 null

关于c# - 我如何告诉 Resharper 我的 IEnumerable 方法删除了空值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26557239/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com