if (currentAsm[i].IsClass && currentAsm[i].Namespace != null
&& currentAsm[i].Namespace.Contains("parse", StringComparison.InvariantCultureIgnoreCase))
不清楚开发环境为何突出
currentAsm[i].命名空间
作为可能为 null 的引用的取消引用,尽管在相同条件下检查 null
在使用 linq 的类似示例中,当检查 null 时没有可空警告
.Where(type => type.FullName != null && type.Namespace != null && type.Namespace.Contains("parse", StringComparison.InvariantCultureIgnoreCase))
而第二个问题,如何最好地安排在Where中的多个条件的转移?由于没有立即使用选项卡转换到新行,您是按选项卡本身还是按 VS 建议的那样操作?例如,


您需要检查 currentAsm[i] 不为空。
如果属性命名空间不是可为空的字符串 - 字符串?- 检查 null 是没用的,会发出警告。
但显然 currentAsm 包含类型,因此 Namespace 属性是字符串?
当您使用返回布尔值的方法评估可为空的属性时,结果是可为空的布尔值。
解决方案是将结果与不可为空的值进行比较:x == true
你的代码应该是这样的:
或者,更好 - 只读取一次数组
名字很重要。currentAsm 必须是 currentType。
另外,在提问的时候,最好在数组类型中说出来。