c# - 键入“?”时如何阻止 Resharper 删除 [CanBeNull] 在引用类型名称的末尾?
问题描述
我正在将我的 .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]
已删除。)
所以我的问题是:
当我在引用类型名称的末尾键入 a 时,有没有办法阻止 Resharper 删除该[CanBeNull]
属性??
我已经搜索了所有 Resharper 选项,但我还没有找到一个。
解决方案
我在 Resharper 支持论坛上问了这个问题,并得到了解决方案:
要解决这个问题:
- 转到扩展 -> Resharper -> 选项 -> 环境 -> 编辑器行为 -> C#
- 找到并关闭选项“ Annotate nullability on '!'/'?' 在类型名称“。
- 找到并关闭选项“ Annotate nullability on '!'/'?' 在其他岗位"
推荐阅读
- sql - 获取每个组的第一条和最后一条记录
- google-chrome - 如何检索检查元素中的隐藏元素 - Chrome 开发工具?
- python - Numpy Python 等效于 MATLAB corr
- raspberry-pi - 如何将 LOLIN 7 WS2812B LED 连接到 Raspberry Pi Pico (RP2040)?
- mysql - 数据库中的成功快照表。但是当有事件插入、更新或删除时不能CDC
- java - java - 如何将Gson与Java中可以是多种类型的对象一起使用?
- amazon-web-services - 将 Dotnet 核心 Web api 部署到 AWS EKS
- autohotkey - 使用打开文件对话框的文件名字段打开多个文件?
- reactjs - 如何将 3 个输入元素中的单个输入元素传递给反应钩子中的组件
- sql - 仅选择具有最大值的行,但具有此信息的列是 SUM()