为什么C#中生成的代码使用下划线?

为什么C#中生成的代码使用下划线?,c#,private,members,C#,Private,Members,我知道这可能是一个愚蠢的问题,但问题来了。 我总是写我的私有成员,比如privatember,并且我已经阅读了很多关于C#中命名约定的内容,因为我注意到visual studio中许多自动生成的代码都使用\u variableName作为私有成员。在我读到的任何地方,甚至在Microsoft文档中,都应该使用privatember。 所以,我的问题是,如果良好实践要求我像现在这样编写privatember,为什么heck Visual Studio使用下划线(\u privatember)生成包

我知道这可能是一个愚蠢的问题,但问题来了。 我总是写我的私有成员,比如
privatember
,并且我已经阅读了很多关于C#中命名约定的内容,因为我注意到visual studio中许多自动生成的代码都使用
\u variableName
作为私有成员。在我读到的任何地方,甚至在Microsoft文档中,都应该使用
privatember
。 所以,我的问题是,如果良好实践要求我像现在这样编写
privatember
,为什么heck Visual Studio使用下划线(
\u privatember
)生成包含私有成员的类?

这只是C语言约定,以便在构造函数中可以使用_varable而不是这个.variable,当构造函数和字段名相同时

中有所有c#命名约定

如果你遵循生成代码的约定,那就太好了。 许多程序员使用与生成代码相同的约定。
一些帮助您重构代码的程序也建议您遵循字段名的命名约定。

这只是他们使用的约定,我也这样做。您最终可以根据需要命名您的私有字段。在它前面加下划线只会使它更容易阅读。

命名约定不是100%一致的。这是一些人喜欢的,一些人漠不关心的,一些人讨厌的。某些人认为通过变量来更好地表现变量,这是一种方法。其他人总是使用
this.instanceVariable
而不是
instanceVariable
,因此实例变量非常突出,其他人预先添加了除'.'字符以外的其他字符,而有些人只是不刻意使用任何特殊的区别

在一天结束时,重要的是你和你团队的其他成员在一个标准上达成一致,并与之保持一致。世界上其他人选择做的事情不需要影响你


还值得一提的是,在大多数情况下,Visual Studio生成的代码片段可以配置为符合您团队的编码实践。

作为惯例,私有字段与下划线一起使用,例如string\u name

该链接将为您提供有关MS命名coventions指南的更多信息。这确实是个人喜好。我不会使用生成的代码作为我的编码约定标准的灵感

不要使用下划线、连字符或任何其他非字母数字字符。


可能是因为它是生成的代码,不适合人类阅读

开头的下划线是VS表示它是privateMember的方式。我们将下划线保留在开头作为一条规则,但对于您使用的命名约定,这实际上是个人的偏好。只需选择一个并坚持使用它,这样你就不会混淆自己或其他可能查看代码的人。

不久前,当C#进入市场时,有一个概念认为局部变量应该由前缀
引导。社区不接受此概念,因为在纯C中,
\uuu
引导系统变量/函数,元数据由
\u
引导。因此,几年后,他们现在不鼓励使用它。但是你仍然会发现一些信徒使用这种符号,不是因为它是一种狂热的符号,而是很多旧的C#应用程序都包含这种约定

为什么在VisualStudio中会出现这种情况


这可能与设计的时间间隔有关。在那个时候,这种方法是由语言设计者提出的。因此,在最新版本的配置中,可能没有人改变这一点

请阅读整个问题,而不仅仅是主题。@Vash这是一个很大的假设,我确实阅读了这个问题。我只是明白为什么你的意思和我不一样。你已经有了被接受的答案,你赢了。请阅读整个问题,而不仅仅是主题。我读了,我刚刚完成了一小部分我的答案,所以你不理解。在您的回答中,与Visial Studio和生成的代码无关。具有讽刺意味的是,该链接实际上建议您不要使用它。更正它确实建议您不要使用它,因此我说私有字段与下划线一起使用,并将链接复制给您作为旁白,使用下划线作为成员变量前缀的一个原因是它们出现在intellisense列表的顶部。我个人讨厌它,因为键盘拉伸以获得下划线字符真的很尴尬。很荣幸找到这个参考。我同意其中的所有内容,除了下划线,对我来说,如果所有私有字段都以下划线作为前缀,那么扫描类就更容易了。上面的链接指的是公开的API(请参阅)-而不是
private