我不应该为此收到编译器警告吗?我该如何启用它?

lin*_*lnk 1 c# visual-studio-2010 compiler-warnings

让我说我有这个

public class MyClass
{
    public string myMessage { get; set; }

    void MyMethod() 
    {
        string myMessage;
    }
}
Run Code Online (Sandbox Code Playgroud)

我不应该得到一个警报约myMessageMyMethod隐藏(?)中myMessage的类属性?我建立时,我没有得到任何效果.我如何激活此检查?

Eri*_*ert 8

这里的问题是我们无法区分有效的,理想的隐藏案例和意外的隐藏案例.我们尝试在以下情况下保留警告:(1)代码几乎肯定是错误的;(2)有一种直接的方法来重写代码,以便在实际需要的情况下消除警告.

这通常是一个理想的情况,因为:

class Frog
{
    private string name;
    public Frog(string name)
    {
        this.name = name;
Run Code Online (Sandbox Code Playgroud)

您不希望将字段"name"更改为其他内容,因为它完全是描述性的.您不希望将参数"name"更改为其他内容,因为您希望能够new Frog(name: "Kermit")在C#4或Visual Basic中执行此操作.由于需要隐藏并且代码正确,因此我们不希望产生隐藏警告.


Eri*_*son 6

我知道这种情况没有任何警告.在内部MyMethod(),您可以使用this.myMessage消除本地和类属性之间的歧义.

仅供参考,物业通常是TitleCased,而当地人是camelCased.使用该约定可以防止命名冲突,如列出的冲突.