C#8可为空,在代码中标记为“这不能为空”

问题描述 投票:0回答:1

我正在尝试新的nullable =启用的C#8.0功能。我遇到了一个小问题:

        foreach(FileSystemAccessRule rule in directorySecurity.GetAccessRules(true, true, typeof(System.Security.Principal.NTAccount)))
        {
            // do something with rule
        }

这显示警告,因为编译器认为rule可能为null,而永远不会为null。我当前的解决方法是:

        foreach(FileSystemAccessRule? rule in directorySecurity.GetAccessRules(true, true, typeof(System.Security.Principal.NTAccount)))
        {
            if (rule == null) continue;
            // do something with rule
        }

但是我对诸如[NeverNull]FileSystemAccessRule rule之类的修复会更满意。有这样的东西吗?或其他解决方案?

c# nullable c#-8.0
1个回答
1
投票

如果AuthorizationRuleCollection没有声明可为空性,或将它们声明为可为空:编译器有权提出投诉。如果您确定,可以使用dammit运算符:

© www.soinside.com 2019 - 2024. All rights reserved.