我有这个:
using Excel = Microsoft.Office.Interop.Excel;
. . .
private Excel.Application _xlApp;
private Excel.Workbook _xlBook;
private Excel.Sheets _xlSheets;
private Excel.Worksheet _xlSheet;
CodeRush称“Excel”。对于_xlBook,_xlSheets和_xlSheet(但不是_xlApp)是多余的(“冗余类型限定符”),所以我删除了它们:
private Excel.Application _xlApp;
private Workbook _xlBook;
private Sheets _xlSheets;
private Worksheet _xlSheet;
然而,在尝试编译时,我得到了错误的信息,如:
找不到类型或命名空间名称'Sheets'(您是否缺少using指令或程序集引用?)
因此,遵循CodeRush的建议打破了构建(当然,很容易恢复到编译状态),但对我来说更有趣的是它为什么不建议我删除“Excel”。来自“Excel.Application _xlApp”
为什么它会识别出“Excel”。应用程序需要前缀,但工作簿,表格和工作表不需要前缀吗?
FWIW,CodeRush的其他推荐更改也破坏了我的构建(如下所示);另外,当我运行“Code Cleanup”或一些这样的命令时,它在我的代码中的各个地方添加了大量的空格。我已经卸载了CodeRush。对于我的钱,Resharper在比较这两种工具时是一个明确而果断的主力。
当命名空间需要一个前缀时CodeRush没有意识到的另一个实例(没有双关语)是这样的:
namespace RoboReporter.DeliveryPerformance
{
public class DeliveryPerformance
......它建议删除“RoboReporter”。像这样:
namespace DeliveryPerformance
{
public class DeliveryPerformance
...但是当我这样做时,它认为对DeliveryPerformance的引用(特别是“List< DeliveryPerformance>”)指向的不是类,而是指向命名空间。