为什么用户定义的类没有“声明但从未使用过”警告?

时间:2017-06-05 10:24:41

标签: c#

在C#中,当你声明但不使用内置类或结构时,你会得到一个“声明但从未使用过”的警告,即使该变量被赋值,例如在这段代码中:

string myStr;
myStr = "foo";
return;

但是,对于用户定义的类或结构,您不会收到相同的警告:

Bar myBar;
myBar = new Bar();
return;

为什么后一种情况没有警告?如果构造函数有副作用,你可以说new Bar();,并且分配副作用的唯一方法是赋值运算符是否过载。但是Visual Studio可以检查这个并在操作员没有超载时发出警告,但事实并非如此。有没有技术上的原因导致它不这样做?

1 个答案:

答案 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/34092https://github.com/dotnet/roslyn/issues/15695(基本上它是'设计' )。