C#中的命名约定 – 下划线

我在http://www.asp.net上的MVC3 Razor教程中看到了这一点

public ActionResult Index() { return View(_usrs._usrList); } 

这种用法不是很明显吗? 我一直以为[docs]

在C#中,我通常看到它仅在为公共属性定义底层私有成员变量时使用。 其他私有成员变量没有下划线。 尽管如此,随着自动属性的出现,这种用法已基本消失。

或者这是我看到的新命名惯例? 对微软自己的教程中的用法非常好奇。

PS:文章非常好。 只是我倾向于遵循命名约定以提高可读性。

StyleCop上有一篇关于C#样式指南开发的好文章。

.NET的原始指导原则是永远不要使用下划线,除非它们是私有成员变量的一部分,然后仅作为前缀,例如_customerId 。 这可能是从MFCinheritance的,其中’m_’被用作成员变量的前缀。

目前的做法是根本不使用下划线。 私有成员变量和具有相同名称的参数之间的消歧应该使用’this。’来完成。 实际上,所有对私有成员的引用都应以“this”为前缀。

似乎使用下划线的唯一地方是unit testing方法。 我不是粉丝,但它可能使方法更具可读性,例如Throw_If_Customer_Is_Null(){...}

这些指南在http://blogs.msdn.com/b/brada/archive/2005/01/26/361363.aspx中进行了总结,并包含了使用“this”的规定。 而不是下划线。 但是我发现用“this。”来代我的代码会让代码变得更加冗长,混乱和难以理解。 此外,它似乎不像下划线那样经常被遵循,因此作为惯例,“_”似乎更为传统。

在ASP中。 NET MVC 3下划线更常用。 例如,您需要使用下划线命名所有部分视图,例如_MyPartialView
它可以轻松区分应用程序中的部分视图和视图。

无论如何,在这个例子中我不喜欢唱下划线,因为没有必要使用它们。 这没有错,因为使用实体的下划线列表编写是一种好习惯。 但我宁愿在没有他们的情况下写作。
所以两种方式都是对的,写下你感觉更舒服的方式。