c# - 在引用类型名称末尾键入 "?"时,如何阻止 Resharper 删除 [CanBeNull]?

标签 c# resharper nullable

我正在经历将我的 .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 支持论坛上提出了这个问题,并得到了解决方案:

https://resharper-support.jetbrains.com/hc/en-us/community/posts/360006676140-How-to-stop-Resharper-from-removing-CanBeNull-when-typing-at-the-end-of-a-reference-type-name-

修复它:

  1. 转到扩展 -> Resharper -> 选项 -> 环境 -> 编辑器行为 -> C#
  2. 找到并关闭选项“Annotate nullability on '!'/'?'在类型名称之后"。
  3. 找到并关闭选项“Annotate nullability on '!'/'?'在其他位置"

关于c# - 在引用类型名称末尾键入 "?"时,如何阻止 Resharper 删除 [CanBeNull]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58971090/

相关文章:

c# - 在哪里可以下载 Resharper 的命名标准/编码标准?

c# - 最小占用空间/准系统 ASP.NET Core WebAPI

c# - Sitecore 项目 :created vs item:added

c# - .Net Core Docker镜像在Docker中运行时无法访问数据库

.net - 当我检查空值时禁用空引用警告

c# - 使用 DynamicObject 存储类型信息

c# - 当 IE 未在 Windows 7 上以管理员身份打开时,不会触发 WebBrowser 事件

c# - 静态检测 foreach 语句中的类型不匹配

c# - 使用 FastMember 为 Nullable<T> 赋值

map - 在 RavenDB Map/Reduces 中处理可为空字段的正确方法?