c# - Resharper 模式以检测具有可空类型的算术

标签 c# resharper

谁能想出好的 Resharper 模式来检测以下错误:

decimal? x = null;

decimal? y = 6M;

var total = x + y;

Console.WriteLine(total); // Result is null

我已经尝试创建一个模式,但我不知道如何快速处理所有类型的算术(例如 +、-、* 等)和任何可为 null 的类型 ( e.g. Nullable<int>, Nullable<decimal>, Nullable<double> etc )。我也无法处理交换性(例如,它应该检测 x + y 以及 y + x)。

请注意,我不一定需要检测 x 是否实际上为 null:只是它是否为可空类型。我想强制开发人员编写:x.Value + y.Value。

最佳答案

这不是一个完整的答案,但这是我迄今为止想到的最好的答案。

模式是:

$obj$ + $nullableObj$

obj 是“System.Object 类型或其派生类型之一的表达式 nullableObj 是一个“System.Nullable 类型的表达式”。 (请注意,您不希望 nullableObj 包含派生类型)。

这不是一个很好的解决方案,因为该模式不处理交换性,因此您需要复制并粘贴它并反转表达式:

$nullableObj$ + $obj$

此外,此模式仅处理小数,因此您需要为您感兴趣的每种类型复制并粘贴它(是的,这可能有很多模式)。

一个好消息:+ 符号可以处理加法和减法,因此您无需担心减法。

关于c# - Resharper 模式以检测具有可空类型的算术,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11607309/

相关文章:

c# - 使用 SaveFileDialog 从 Mysql 打开一个 Blob 文件到 PC

c# - WPF MVVM中组合框的默认值

c# - 如何在 View 页面上显示捕获异常消息?

c# - 使用 Json.NET 的流利转换器/映射器?

javascript - Visual Studio 2013 JavaScript/TypeScript 奇怪的缩进行为

visual-studio - 同时运行 Visual Assist X 和 ReSharper 5.0

c# - 为什么我会收到 ReSharper 错误 "The extracted code has multiple entry points"?

visual-studio-2013 - 从 Visual Studio 2013 中完全删除 Resharper Ultimate

c# - .NET Tiff 问题 C#

visual-studio-2012 - Visual Studio 2012 + Resharper 7.1 = slooooow,怎么办?