在C#中,当你声明但不使用内置类或结构时,你会得到一个“声明但从未使用过”的警告,即使该变量被赋值,例如在这段代码中:
string myStr;
myStr = "foo";
return;
但是,对于用户定义的类或结构,您不会收到相同的警告:
Bar myBar;
myBar = new Bar();
return;
为什么后一种情况没有警告?如果构造函数有副作用,你可以说new Bar();
,并且分配副作用的唯一方法是赋值运算符是否过载。但是Visual Studio可以检查这个并在操作员没有超载时发出警告,但事实并非如此。有没有技术上的原因导致它不这样做?
答案 0 :(得分:4)
Resharper会显示问题 - 请参阅Value assigned is not used in any execution path - C#。
代码分析也会显示问题 - https://msdn.microsoft.com/library/ms182278.aspx。
至于为什么它现在没有显示给你(没有Code Analysis或Resharper),请参阅https://stackoverflow.com/a/10629031/34092和https://github.com/dotnet/roslyn/issues/15695(基本上它是'设计' )。