3

每当 Resharper 遇到这样的代码时:

(treeListNode.Tag as GridLine).AdvertiserSeparation = 5;

它为您提供了一个可能的修复(因为 treeListNode.Tag as GridLine 可能为空)。它说:“替换为直接投射”,它将代码变成以下内容:

((GridLine) treeListNode.Tag).AdvertiserSeparation = 5;

这很棒。但是,当它遇到这样的代码时:

GridLine line = treeListNode.Tag as GridLine;
line.AdvertiserSeparation = 5;

Resharper 只是显示一个警告“可能的 System.NullReferenceException”,但没有让我“用 Direct Cast 替换”。有没有办法让 Resharper 为我提供这种重构,因为它已经有了它?

4

1 回答 1

1

在第一种情况下,异常在表达式中,修复也在表达式中。因此,修复程序可用。在第二种情况下,异常是在基于变量的赋值行上,但修复是在不相关的表达式中。因此 Resharper 不会在此处提供修复程序。

不过,Jetbrains 的家伙反应非常迅速,因此您可以记录一个案例。

http://www.jetbrains.net/jira/browse/RSRP

于 2010-01-22T04:16:49.193 回答