加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 防止Resharper“可能的空引用异常”警告

发布时间:2020-12-15 04:17:17 所属栏目:百科 来源:网络整理
导读:假设我有一个具有只读属性的接口,以及一个具体的类,其中属性在构造函数中实例化并标记为只读. internal interface IExample{ ObservableCollectionstring Items { get; }}internal class Example : IExample{ private readonly ObservableCollectionstring _
假设我有一个具有只读属性的接口,以及一个具体的类,其中属性在构造函数中实例化并标记为只读.
internal interface IExample
{
    ObservableCollection<string> Items { get; }
}


internal class Example : IExample
{ 
    private readonly ObservableCollection<string> _items;

    public Example()
    {
       _items = new ObservableCollection<string>();
    }

    public ObservableCollection<string> Items
    {
       get { return _items; }
    }
}

当我使用接口时,Resharper警告我在调用代码时可能有一个可能的空引用.

public class ExampleWithWarnings
{
    public void Show()
    {
       IExample example = new Example();

       // resharper warns about null reference
       example.Items.Add( "test" );
    }
}

我意识到,根据定义,接口并不能保证属性具有值. (我也认识到接口上的属性并不理想).但我知道这个属性总会有价值.

是否有任何魔法属性可以放在界面上,以防止Resharper出现警告?我宁愿不必使用disable pragma警告来修饰类的所有用法.

解决方法

是的,您可以使用一个属性:JetBrains.Annotations.NotNullAttribute.但是您不需要在项目中添加对ReSharper的引用.您可以使用自己的实现:打开ReSharper选项,并在Code Inspection>下.代码注释您将找到“将默认实现复制到剪贴板”.现在只需将其粘贴到项目的代码文件中即可.您甚至可以更改命名空间.

然后在接口属性中拍打属性.

您还应该查看代码检查>设置并选择“假设实体可以为null …当实体明确标记为CanBeNull属性,或检查为null”时.这样,您只会在明确标记为麻烦的成员中收到警告.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读