我正在经历将我的 .Net 4.8(不是 Core!)项目转换为使用新的 C# 8“可空引用”功能的过程。
为此,我通过添加 #nullable enable
依次更改每个源代码文件。并用 ?
修饰所有可为空的引用后缀。这使我能够零碎地转换我的所有代码以使用新功能。
现在考虑源文件中的以下方法 #nullable enable
指定:
#nullable enable
[CanBeNull] public static string Test([CanBeNull] string arg)
{
return arg;
}
如果我输入“?”在 string
中的任何一个之后声明(为了使用新的 C# 8“可空”特性),Resharper 删除了 [CanBeNull]
属性:
public static string? Test(string? arg)
{
return arg;
}
但是,如果该属性被删除,则 Resharper 不会警告我其他源文件中可能使用空引用。 (如果所有源文件都指定了#nullable enable
,这将不是问题,但是因为我正在以零散的方式转换文件,所以有许多文件还没有指定#nullable enable
,因此编译器不会警告我可能使用空引用 - Resharper 也不会,因为 [CanBeNull]
已被删除。)
所以我的问题是:
有没有办法阻止 Resharper 删除 [CanBeNull]
当我输入 ?
时的属性在引用类型名称的末尾?
我已经搜索了所有的 Resharper 选项,但我还没有为此找到一个。
最佳答案
我在 Resharper 支持论坛上提出了这个问题,并得到了解决方案:
修复它:
- 转到扩展 -> Resharper -> 选项 -> 环境 -> 编辑器行为 -> C#
- 找到并关闭选项“Annotate nullability on '!'/'?'在类型名称之后"。
- 找到并关闭选项“Annotate nullability on '!'/'?'在其他位置"
关于c# - 在引用类型名称末尾键入 "?"时,如何阻止 Resharper 删除 [CanBeNull]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58971090/